为Android应用程序创建一个可解析的JSON文件

Mdl*_*dlc 5 android json

我正在尝试使用我的Android应用程序在我的网络服务器上获取json文件中的图像列表.但它们没有被阅读,我一定是犯了一些错误,可能是在我的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"
    }
]
}
Run Code Online (Sandbox Code Playgroud)

我的代码:

 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);
    }           
}
 }
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!

Pra*_*ani 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"
    }
]
Run Code Online (Sandbox Code Playgroud)

你的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")));
}
Run Code Online (Sandbox Code Playgroud)


Bob*_*ke4 5

您的问题是,当您的根元素是JSONObject时,您正在尝试创建JSONArray.

这行不正确:

JSONArray array = new JSONArray(data);
Run Code Online (Sandbox Code Playgroud)

你应该改为:

JSONObject rootObject = new JSONObject(data);
JSONArray array = rootObject.optJSONArray("wallpaper");
Run Code Online (Sandbox Code Playgroud)