每个news
条目都有三个内容:title
,content
和date
。
从数据库中检索条目,我想在我的应用程序中使用JSONObject和JSONArray读取它们。但是,我不知道如何使用这些类。
这是我的JSON字符串:
[
{
"news":{
"title":"5th title",
"content":"5th content",
"date":"1363197493"
}
},
{
"news":{
"title":"4th title",
"content":"4th content",
"date":"1363197454"
}
},
{
"news":{
"title":"3rd title",
"content":"3rd content",
"date":"1363197443"
}
},
{
"news":{
"title":"2nd title",
"content":"2nd content",
"date":"1363197409"
}
},
{
"news":{
"title":"1st title",
"content":"1st content",
"date":"1363197399"
}
}
]
答案 0 :(得分:8)
您的JSON字符串是JSONArray
JSONObject
,其中包含一个名为“news”的内部JSONObject
。
尝试使用它来解析它:
JSONArray array = new JSONArray(jsonString);
for(int i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i);
JSONObject innerObject = obj.getJSONObject("news");
String title = innerObject.getString("title");
String content = innerObject.getString("content");
String date = innerObject.getString("date");
/* Use your title, content, and date variables here */
}
答案 1 :(得分:2)
首先,您的JSON结构并不理想。你有一个对象数组,每个对象都有一个对象。但是,您可以这样阅读:
JSONArray jsonArray = new JSONArray (jsonString);
int arrayLength = jsonArray.length ();
for (int counter = 0; counter < arrayLength; counter ++) {
JSONObject thisJson = jsonArray.getJSONObject (counter);
// we finally get to the proper object
thisJson = thisJson.getJSONObject ("news");
String title = thisJson.getString ("title");
String content = thisJson.getString ("content");
String date = thisJson.getString ("date");
}
<强>然而!强>
如果将JSON更改为如下所示,则可以做得更好:
[
{
"title": "5th title",
"content": "5th content",
"date": "1363197493"
},
{
"title": "4th title",
"content": "4th content",
"date": "1363197454"
}
]
然后,您可以按如下方式解析它:
JSONArray jsonArray = new JSONArray (jsonString);
int arrayLength = jsonArray.length ();
for (int counter = 0; counter < arrayLength; counter ++) {
// we don't need to look for a named object any more
JSONObject thisJson = jsonArray.getJSONObject (counter);
String title = thisJson.getString ("title");
String content = thisJson.getString ("content");
String date = thisJson.getString ("date");
}