Android的,解析JSON对象(Android, Parsing JSON object)

2019-10-16 18:50发布

当我打电话服务器它的响应是基于JSON对象。 其实,我知道如何解析JSON对象,但这种反应是奇怪的我。 服务器的响应是:

{"body":"Not Available!","clazz":"SoccerMatchPreview","id":{"inc":-2024241794,"machine":415106952,"new":false,"time":1337861978000,"timeSecond":1337861978},"publishedDate":"2012-06-08 17:00:00 +0100","refKey":"SoccerMatchPreview_4fb897be18be8b87f9117595","title":"Poland vs Greece"}

那些我需要的信息是身体,publishedDate,refKey和标题。 我已经基于JSON对象编写的代码是这样的:

JSONObject jObject = new JSONObject(response);
                    JSONArray contestantObjects = jObject.getJSONArray("id");
                    for(int i=0; i<contestantObjects.length(); i++) {
                        mPreview.setBody(contestantObjects.getJSONObject(i).getString("body").toString());
                        mPreview.setPublishedDate(contestantObjects.getJSONObject(i).getString("publishedDate").toString());
                        mPreview.setRefKey(contestantObjects.getJSONObject(i).getString("refKey").toString());
                        mPreview.setTitle(contestantObjects.getJSONObject(i).getString("title").toString());
                    }

但因为它没有“[]”我认为这不是JSON对象。 因此,我写另一种基于代码JSON阵列。

JSONArray contestantObjects = new JSONArray(response);
                    for(int i=0; i<contestantObjects.length(); i++) {
                        mPreview.setBody(contestantObjects.getJSONObject(i).getString("body").toString());
                        mPreview.setPublishedDate(contestantObjects.getJSONObject(i).getString("publishedDate").toString());
                        mPreview.setRefKey(contestantObjects.getJSONObject(i).getString("refKey").toString());
                        mPreview.setTitle(contestantObjects.getJSONObject(i).getString("title").toString());
                    }

但结果是相同的,logcat的说明:

值{ “ID”:{ “timeSecond”:1337861978, “时间”:1337861978000, “新”:假的, “机器”:415106952, “公司”: - 2024241794}, “体”: “不可!”,”标题 “:” 波兰vs希腊”, “publishedDate”: “2012-06-08 17:00:00 +0100”, “clazz中”: “SoccerMatchPreview”, “refKey:类型org.json的SoccerMatchPreview_4fb897be18be8b87f9117595 ”}“”。的JSONObject不能转换到JSONArray

任何建议,将不胜感激。 谢谢

Answer 1:

JSONArray contestantObjects = jObject.getJSONArray("id");

你的错误是在这里, id本身是一个复杂的对象,而不是一个数组。

"id":{"inc":-2024241794,"machine":415106952,"new":false,"time":1337861978000,"timeSecond":1337861978}

因此,得到了后id JSON对象,你应该能够得到各个属性,如incmachinenewtime ,和timeSecond

JSONObject idObject = ...getJSONObject("id");
String machine = idObject.get("machine");

甲JSON阵列看起来会是这样的: []表示的阵列。

例如, "Animals":["Pig", "Cat", "Dog"]

在另一实例中,它也可以是复杂的对象,数组"Animals":[{"name":"AAA", "blood":"A"}, {"name":"BBB", "blood":"B"}]

编辑:这是一个很好的可视化JSON我会推荐。

http://jsonviewer.stack.hu/



文章来源: Android, Parsing JSON object