从JSON Java Android

时间:2018-03-29 15:16:07

标签: java json

我遇到了通过JSON检索信息的问题

Raw Json就是这个

  

{“date”:“{\”昨天\“:\”周三28“,”今天“:\”周四   29 \“,\”明天\“:\”Fri 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();
                }
            }

4 个答案:

答案 0 :(得分:2)

我强烈建议使用库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;

}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

只需简单地替换\"用"得到干净的json字符串,然后解析json以读取数据usig JSONObjct。

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