Создайте анализируемый JSON-файл для приложения для Android

Я пытаюсь получить список изображений в json-файле, который у меня есть на моем веб-сервере, с моим приложением для Android. Но они не читаются, я, должно быть, допустил ошибку, возможно, в моем json-файле.

Я пытаюсь создать файл .Json, который может прочитать мое приложение, один из моих экспериментальных файлов JSON приведен ниже, но он не работает.

Поскольку я не очень разбираюсь в Json, мне было интересно узнать, может ли кто-нибудь узнать, как создать файл JSON, который может обрабатывать мое приложение.

Мой экспериментальный файл json:

{ "Wallpaper": [ { "id": "1", "title": "Clouds", "thumburl": "http://url.com/images/Pages/Apps/apps.png", "previewurl": "http://url.com/images/Pages/Apps/apps.png", "url": "http://url.com/images/Pages/Apps/apps.png", "text": "Sky" } ] } 

И мой код:

  import someimportsandotherstuff import de.dan_nrw.android.scroid.Wallpaper; public final class JsonWallpaperParser implements IWallpaperParser { /** * Creates a new instance of JsonWallpaperParser. */ JsonWallpaperParser() { super(); } /* (non-Javadoc) * @see de.dan_nrw.boobleftboobright.IWallpaperParser#parse(java.lang.String) */ @Override public List<Wallpaper> parse(String data) throws ParseException { try { JSONArray array = new JSONArray(data); List<Wallpaper> wallpapers = new ArrayList<Wallpaper>(); for (int i = 0; i < array.length(); i++) { JSONObject jsonWallpaper = array.getJSONObject(i); wallpapers.add(new Wallpaper(jsonWallpaper.getString("id"), jsonWallpaper.getString("title"), URI.create(jsonWallpaper.getString("thumburl")), URI.create(jsonWallpaper.getString("previewurl")), URI.create(jsonWallpaper.getString("url")), jsonWallpaper.getString("text"))); } return wallpapers; } catch (JSONException ex) { throw new ParseException(ex.getMessage(), 0); } } } 

Любая помощь приветствуется!

Тогда ваш json должен быть таким

 [ { "id": "1", "title": "Clouds", "thumburl": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", "previewurl": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", "url": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", "text": "Sky" } ] 

Ваш JSONString возвращающий JSONObject не JSONArray Вы должны разобрать свою строку json, как это

 JSONObject object=new JSONObject(data); JSONArray array=object.getJSONArray("wallpaper"); List<Wallpaper> wallpapers = new ArrayList<Wallpaper>(); for (int i = 0; i < array.length(); i++) { JSONObject jsonWallpaper = array.getJSONObject(i); wallpapers.add(new Wallpaper(jsonWallpaper.getString("id"), jsonWallpaper.getString("title"), URI.create(jsonWallpaper.getString("thumburl")), URI.create(jsonWallpaper.getString("previewurl")), URI.create(jsonWallpaper.getString("url")), jsonWallpaper.getString("text"))); } 

Ваша проблема в том, что вы пытаетесь создать JSONArray, когда ваш корневой элемент является JSONObject.

Эта строка неверна:

 JSONArray array = new JSONArray(data); 

Вы должны изменить это на:

 JSONObject rootObject = new JSONObject(data); JSONArray array = rootObject.optJSONArray("wallpaper"); 

У вашего JSON есть синтаксические ошибки. В ряде строк отсутствуют запятые, например

  "previewurl": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png" "url": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png" 

Отформатируйте свой json следующим образом:

 { "wallpaper": [ { "id": "1", "title": "Clouds", "thumburl": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", "previewurl": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", <--- You were missing a comma here "url": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png", <-- and here "text": "Sky" } ] } 

В будущем вы можете использовать JSON Lint для проверки правильности.

Прежде чем разобрать любую строку JSON. Создайте свою строку JSON следующим образом:

 try { JSONObject wallpaper=new JSONObject(); wallpaper.put("id", "1"); wallpaper.put("title", "Clouds"); wallpaper.put("thumburl", "http://sherdle.com/images/Pages/Apps/Sherdleapps.png"); wallpaper.put("previewurl", "http://sherdle.com/images/Pages/Apps/Sherdleapps.png"); wallpaper.put("url", "http://sherdle.com/images/Pages/Apps/Sherdleapps.png"); wallpaper.put("text", "Sky"); JSONArray wallpaer_array=new JSONArray(); wallpaer_array.put(wallpaper); Log.d("json :",wallpaer_array.toString(0)); } catch (JSONException e) { e.printStackTrace(); } 

Logcat:

 05-06 11:05:51.253: D/json :(434): [ 05-06 11:05:51.253: D/json :(434): { 05-06 11:05:51.253: D/json :(434): "id": "1", 05-06 11:05:51.253: D/json :(434): "thumburl": "http:\/\/sherdle.com\/images\/Pages\/Apps\/Sherdleapps.png", 05-06 11:05:51.253: D/json :(434): "text": "Sky", 05-06 11:05:51.253: D/json :(434): "title": "Clouds", 05-06 11:05:51.253: D/json :(434): "previewurl": "http:\/\/sherdle.com\/images\/Pages\/Apps\/Sherdleapps.png", 05-06 11:05:51.253: D/json :(434): "url": "http:\/\/sherdle.com\/images\/Pages\/Apps\/Sherdleapps.png" 05-06 11:05:51.253: D/json :(434): } 05-06 11:05:51.253: D/json :(434): ]