在android中获取JSON响应?

时间:2015-03-04 10:22:35

标签: android json

我想要下面提供的这种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"}]};的响应?

感谢。

3 个答案:

答案 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);