我想要下面提供的这种Json Parsing
并从Json Parsing Data
获取数据。但每当执行我的代码(在后台进程中执行)时,它会给我NullPointer Exception
,如下所示。如何解决这个问题呢?如何从以下网址获取JSON Response
?
data = {" 2015-03-06":[{" date":" 2015-03-06","签":" 0"}]};
我的代码是,
@Override
urlGetData= "view-source:XXXXXXXX?date=YYYY-MM-DD&sign=2XXXX";
protected Void doInBackground(Void... arg0) {
dataList = new ArrayList<HashMap<String, String>>();
// Retrieve JSON Objects from the given URL address
jsonobject = JSONFunctions.getJSONfromURL(urlGetData);
try {
jsonarray = jsonobject.getJSONArray("YYYY-MM-DD");
for (int i = 0; i < jsonarray.length(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
jsonobject = jsonarray.getJSONObject(i);
// Retrive JSON Objects
strRating = String.valueOf(jsonobject
.getString("rating"));
dataList.add(map);
}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
但它在Null Pointer Exception
上给了我jsonarray = jsonobject.getJSONArray("YYYY-MM-DD")
。
如何获得data = {"2015-03-06":[{"date":"2015-03-06","sign":"0"}]};
的响应?
感谢。
答案 0 :(得分:0)
尝试使用
jsonarray = jsonobject.getJSONArray("2015-03-06");
而不是
jsonarray = jsonobject.getJSONArray("YYYY-MM-DD");
因为jsonArray的关键是“2015-03-06”不是“YYYY-MM-DD”。希望它会有所帮助。
答案 1 :(得分:0)
如果始终是正确的日期,那么您可以按如下方式解析它: -
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
jsonarray = jsonobject.getJSONArray(dateFormat.format(date).toString());
然后从这个数组中获取你想要的值,但我仍然会说日期作为JSON响应的关键是一个非常糟糕的主意。
答案 2 :(得分:0)
您正在使用“YYYY-MM-DD”。哪个不会返回当前日期。它始终是“YYYY-MM-DD”。因此,您尝试使用键名“YYYY-MM-DD”读取json。这就是你得到空指针的原因。
如果是这种情况,那么您可以使用其他功能获取当前日期和时间。例如
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strDate = sdf.format(c.getTime());
接下来你可以把这个日期作为你的钥匙。
离。 jsonarray = jsonobject.getJSONArray(strDate);