Java Android,解析JSON对象

Java Android,解析JSON对象,java,android,json,parsing,arrays,Java,Android,Json,Parsing,Arrays,当我调用服务器时,它的响应基于json对象。实际上,我知道如何解析JSON对象,但这个响应对我来说很奇怪。服务器响应为: {"body":"Not Available!","clazz":"SoccerMatchPreview","id":{"inc":-2024241794,"machine":415106952,"new":false,"time":1337861978000,"timeSecond":1337861978},"publishedDate":"2012-06-08 17:00

当我调用服务器时,它的响应基于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"}
我需要的信息是body、publishedDate、refKey和title。我基于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());
                    }
JSONObject jObject=新的JSONObject(响应);
JSONArray=jObject.getJSONArray(“id”);
对于(int i=0;i
您的错误就在这里,
id
本身就是一个复杂的对象,而不是数组

"id":{"inc":-2024241794,"machine":415106952,"new":false,"time":1337861978000,"timeSecond":1337861978}
因此,在获得
id
JSON对象后,您应该能够获得各个属性,例如
inc
machine
new
time
timeSecond

JSONObject idObject = ...getJSONObject("id");
String machine = idObject.get("machine");
JSON数组数据结构应该是这样的:
[]
表示数组

"id":{"inc":-2024241794,"machine":415106952,"new":false,"time":1337861978000,"timeSecond":1337861978}
例如,
“动物”:[“猪”、“猫”、“狗”]

在另一个示例中,它也可以是复杂对象的数组,
“动物”:[{“名称”:“AAA”,“血液”:“A”},{“名称”:“BBB”,“血液”:“B”}]

编辑:我推荐一个好的JSON可视化工具。

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

"id":{"inc":-2024241794,"machine":415106952,"new":false,"time":1337861978000,"timeSecond":1337861978}
因此,在获得
id
JSON对象后,您应该能够获得各个属性,例如
inc
machine
new
time
timeSecond

JSONObject idObject = ...getJSONObject("id");
String machine = idObject.get("machine");
JSON数组数据结构应该是这样的:
[]
表示数组

"id":{"inc":-2024241794,"machine":415106952,"new":false,"time":1337861978000,"timeSecond":1337861978}
例如,
“动物”:[“猪”、“猫”、“狗”]

在另一个示例中,它也可以是复杂对象的数组,
“动物”:[{“名称”:“AAA”,“血液”:“A”},{“名称”:“BBB”,“血液”:“B”}]

编辑:我推荐一个好的JSON可视化工具。


谢谢亲爱的Chin,根据您提到的内容,我发现“id”是错误的键,因为我不需要它的项。如何获取body、publishedDate、refKey和title?基于什么,我应该解析“response”字符串?要获取publishedDate、refKey和title,您只需要JSONObject jObject=new JSONObject(response);String publishedDate=jObject.get(“publishedDate”);等等。在这一部分,我强烈建议您研究一个好的JSON库,Google的GSON似乎是一个好的库。下面是一个简短的教程:谢谢Chin,我可以解析它。谢谢亲爱的Chin,根据您提到的,我发现了“id”是错误的键,因为我不需要它的项。如何获取body、publishedDate、refKey和title?基于什么,我应该解析“response”字符串吗?要获取publishedDate、refKey和title,只需要JSONObject jObject=new JSONObject(response);string publishedDate=jObject.get(“publishedDate”);等等。在这一部分,我强烈建议您研究一个好的JSON库,谷歌的GSON似乎是一个好的库。这里有一个简短的教程:谢谢,我可以解析它。