繁体   English   中英

从JSON Java Android检索数据

[英]Retrieve data from JSON Java Android

我在通过JSON检索信息时遇到问题

Raw Json是这个

{“ date”:“ {\\”昨天\\“:\\”星期三28 \\“,\\”今天\\“:\\”星期四29 \\“,\\”明天\\“:\\”星期五30 \\“}”

现在我该如何接受这个Json并进行格式化?

{
    "date":{
        "yesterday":"Wed 28",
        "today":"Thu 29",
        "tomorrow":"Fri 30"
    }
}

然后从密钥重试日期?

            String jsonStr = sh.makeServiceCall(url); 
            Log.e("RAW-JSON: ","Retrieve RAW-Json is "+jsonStr);

            if (jsonStr != null) {
                try {
                    JSONObject jsonObj = new JSONObject(jsonStr);
                    JSONArray DATESTRING = jsonObj.getJSONArray("date");
                    JSONObject d = DATESTRING.getJSONObject(0);
                    String Ieri = d.getString("yesterday");
                    Log.e("DATE-JSON", "Retrieve DATE-Json is " + yesterday);
                } catch (JSONException e) {
                    Log.e("ERROR", "Not a good result.");
                    e.printStackTrace();
                }
            }

我强烈建议您使用Gson库来解析JSON文档,因为它更加轻松和优雅。

public static date  parseJSON(String jsonArray) {
    date yourDate = new date();
    try {
        yourDate = (gson.fromJson(jsonArray, date.class));

    } catch (Exception e) {
        e.printStackTrace();
    }
    return yourDate;
}

然后,课程日期只是一个与您要阅读的JSON中存在相同元素的类:

public class date {
    private String yesterday;
    private String today;
    private String tomorrow;

}

JSONArray DATESTRING = jsonObj.getJSONArray("date")是错误的,因为“ date”不是JsonArray而是JsonObject!

您可能需要做的是(假设您想要今天的日期):

String todaysDate = jsonObj.getJSONObject("date").getString("today");

只需将\\“替换为”,即可获得干净的json字符串,然后解析json以读取使用JSONObjct的数据。

jsonStr = jsonStr.replace("\\\"", "\"");
JSONObject jsonObj = new JSONObject(jsonStr);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM