5

Androidアプリケーションを使用して、Webサーバーにあるjsonファイルで画像のリストを取得しようとしています。しかし、それらは読み取られていません。おそらく私のjsonファイルで何か間違いを犯したに違いありません。

アプリケーションが読み取れる .Json ファイルを作成しようとしています。実験的な JSON ファイルの 1 つを以下に示しますが、機能していません。

私は 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);
    }           
}
 }

どんな助けでも大歓迎です!

4

5 に答える 5

6

次に、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")));
}
于 2013-04-26T15:20:08.513 に答える
5

問題は、ルート要素が JSONObject の場合に JSONArray を作成しようとしていることです。

この行は正しくありません:

JSONArray array = new JSONArray(data);

これを次のように変更する必要があります。

JSONObject rootObject = new JSONObject(data);
JSONArray array = rootObject.optJSONArray("wallpaper");
于 2013-04-26T15:20:38.850 に答える
4

JSON に構文エラーがあります。多くの行にカンマがありません。

    "previewurl": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png"
    "url": "http://sherdle.com/images/Pages/Apps/Sherdleapps.png"
于 2013-04-26T14:50:23.410 に答える
3

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を使用して正確性を検証できます。

于 2013-04-26T14:50:48.483 に答える