java json 解析空对象_java – 解析JSON时获取NullPointerException

对我来说一切看起来都是正确的:获取结果对象,获取系列数组,获取索引处的对象,以及获取数据数组.

private void downloadAllData() throws JSONException {

queryApi();

JSONObject results = mJsonResponse.getJSONObject("Results"); // NullPointerException here

JSONArray seriesArray = results.getJSONArray("series");

JSONObject DataSeries1 = seriesArray.getJSONObject(0);

JSONArray DataArray1 = DataSeries.getJSONArray("data");

JSONObject DataSeries2 = seriesArray.getJSONObject(1);

JSONArray DataArray2 = DataSeries.getJSONArray("data");

JSON提要:

{"status":"REQUEST_SUCCEEDED","responseTime":36,"message":[],"Results":{

"series":

[{"seriesID":"431432","data":[{"year":"1977","period":"M12","periodName":"December","value":"160.7","footnotes":[{}]},{"year":"1977","period":"M11","periodName":"November","value":"161.3","period":"M10","periodName":"October","value":"162.2","period":"M09","periodName":"September","value":"162.5","period":"M08","periodName":"August","value":"163.4","period":"M07","periodName":"July","value":"164.0","period":"M06","periodName":"June","value":"164.6","period":"M05","periodName":"May","value":"165.8","period":"M04","periodName":"April","value":"166.7","period":"M03","periodName":"March","value":"167.9","period":"M02","periodName":"February","value":"169.1","period":"M01","periodName":"January","value":"170.6","footnotes":[{}]}]},{"seriesID":"321432","value":"50.5","value":"50.4","value":"50.6","value":"50.1","value":"49.4","value":"48.8","value":"48.3","value":"47.6","footnotes":[{}]}]}]

}}

logcat的:

04-10 22:16:59.519 10910-10937/com.learn.kent.mojito E/AndroidRuntime﹕ FATAL EXCEPTION: IntentService[DownloadService]

Process: com.learn.kent.mojito,PID: 10910

java.lang.NullPointerException

at com.learn.kent.mojito.service.DownloadService.downloadAllData(DownloadService.java:151)

at com.learn.kent.mojito.service.DownloadService.onHandleIntent(DownloadService.java:83)

at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)

at android.os.Handler.dispatchMessage(Handler.java:102)

at android.os.Looper.loop(Looper.java:212)

at android.os.HandlerThread.run(HandlerThread.java:61)

04-10 22:16:59.659 10910-10910/com.learn.kent.mojito D/OpenGLRenderer﹕

Enabling debug mode 0

04-10 22:16:59.729 10910-10910/com.learn.kent.mojito I/ActivityManager﹕ Timeline: Activity_idle id: android.os.BinderProxy@42db38a8 time:59558459

04-10 22:17:00.369 10910-10910/com.learn.kent.mojito D/DownloadService﹕ {"Results":{"series":[{"data":[{"value":"50.5","year":"1977","footnotes":[{}],"periodName":"December"},{"value":"50.4","periodName":"November"},{"value":"50.5","periodName":"October"},{"value":"50.6","periodName":"September"},"periodName":"August"},"periodName":"July"},"periodName":"June"},{"value":"50.1","periodName":"May"},{"value":"49.4","periodName":"April"},{"value":"48.8","periodName":"March"},{"value":"48.3","periodName":"February"},{"value":"47.6","periodName":"January"}],"seriesID":"21432"},{"data":[{"value":"62.1",{"value":"61.9",{"value":"61.6",{"value":"61.4",{"value":"61.2",{"value":"61.0",{"value":"60.7",{"value":"60.3",{"value":"60.0",{"value":"59.5",{"value":"59.1",{"value":"58.5","seriesID":"431432"}]},"status":"REQUEST_SUCCEEDED","responseTime":44}

04-10 22:17:01.489 10910-10937/com.learn.kent.mojito I/Process﹕ Sending signal. PID: 10910 SIG: 9

logcat中的JSON响应表示log.d(TAG,mJsonResponse.tostring)

使用Volley初始化mJsonResponse:

private void queryApi() throws JSONException {

try {

jsonObjectQuery.put("seriesid",seriesid);

jsonObjectQuery.put("startyear","" + startYear);

jsonObjectQuery.put("endyear","" + endYear);

} catch (JSONException e) {

e.printStackTrace();

}

JsonObjectRequest jsonObjRequest = new JsonObjectRequest(Request.Method.POST,url,jsonObjectQuery,new Response.Listener() {

@Override

public void onResponse(JSONObject response) {

mJsonResponse = response;

Log.d(TAG,mJsonResponse.toString());

}

},new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError error) {

}

}) {

@Override

public Map getHeaders() throws AuthFailureError {

HashMap headers = new HashMap();

headers.put("Content-Type","application/json; charset=utf-8");

return headers;

}

};

queue.add(jsonObjRequest);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值