Результат JSON - JavaMe - PullRequest
       11

Результат JSON - JavaMe

2 голосов
/ 08 февраля 2011

Я хочу получить это как мой json

{"image1.bmp": 
  {"description": "OK", "filename": "image1.bmp"}, 
{"image2.bmp": 
  {"description": "OK", "filename": "image2.bmp"}, 
{"image3.bmp": 
  {"description": "OK", "filename": "image3.bmp"}
}

, но сейчас я получаю это вместо

{"image1.bmp": 
  {"description": "OK", "filename": "image1.bmp"}
} 
{"image2.bmp": 
  {"description": "OK", "filename": "image2.bmp"}
} 
{"image3.bmp": 
  {"description": "OK", "filename": "image3.bmp"}
}

Это код, который у меня есть для JSON до сих пор

public void toJSON(JSONObject outer,String description, String imageName)
{
  JSONObject inner = new JSONObject();
  try 
  { 
    outer.put(imageName, inner);
    inner.put("description", description);
    inner.put("filename", imageName);
  } 
  catch (JSONException ex) { ex.printStackTrace(); }
}

А

toJSON(outer,"description:" + e.toString(), "filename:" + imageName);       
out.write(outer.toString().getBytes())

1 Ответ

2 голосов
/ 11 февраля 2011

Объекты в выводе, которые вы хотите, не являются допустимыми JSON, если вы не ставите} в конце каждого объекта. Кроме того, похоже, что вы хотите добавить изображения в массив, в JSON массивы находятся между [и].

Простое решение: поместите каждый "внешний" -JSONObjects в JSONArray и затем вызовите toString () массивов:

public class JSONtest
{

    @Test
    public void test() throws JSONException
    {
        JSONArray array = new JSONArray();

        JSONObject im = new JSONObject();       
        toJSON(im, "Ok", "image1.bmp");
        array.put(im);

        im = new JSONObject();      
        toJSON(im, "Ok", "image2.bmp");
        array.put(im);

        im = new JSONObject();      
        toJSON(im, "Ok", "image3.bmp");
        array.put(im);

        System.out.println(array.toString());
    }

    public void toJSON(JSONObject outer,String description, String imageName)
    {
      JSONObject inner = new JSONObject();
      try 
      { 
        outer.put(imageName, inner);
        inner.put("description", description);
        inner.put("filename", imageName);
      } 
      catch (JSONException ex) { ex.printStackTrace(); }
    }

}

Вывод (в формате):

[
   {
      "image1.bmp":{
         "description":"Ok",
         "filename":"image1.bmp"
      }
   },
   {
      "image2.bmp":{
         "description":"Ok",
         "filename":"image2.bmp"
      }
   },
   {
      "image3.bmp":{
         "description":"Ok",
         "filename":"image3.bmp"
      }
   }
]

Существует также множество JSON-форматеров и валидаторов , плавающих по сети, что может пригодиться, когда ваши JSON-строки имеют длину более 10000 символов и содержат глубокое вложение.

...