我遇到了通过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();
}
}
答案 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);