我有一个Android应用程序,我从API中获取了一些JSON,我现在需要解码。我很远,但我没有得到内容。我收到的JSON看起来像这样:
{ "messages": [
{
"created": "1391783287",
"id": 1,
"is_supporter": false,
"text": "Behold! This is a message?"
},
{
"created": "1391783287",
"id": 3,
"is_supporter": true,
"text": "Behave! This is an answer!"
}
]}
我有这段代码:
@Override
protected void onPostExecute(String result) {
try{
JSONArray jArray = new JSONArray(result);
在上面代码的最后一行,我收到一条错误Error: org.json.JSONException: Value {"messages":[{"id":1,"created":"1391788514","text":"How do I pay to an IBAN?","is_supporter":false},{"id":3,"created":"1391788514","text":"What is a payment pool?","is_supporter":false}]} of type org.json.JSONObject cannot be converted to JSONArray
有没有人知道这里有什么问题或我如何解决这个问题?
答案 0 :(得分:7)
你的String是一个包含JSON数组的JSON对象,试试这个:
JSONObject myJSON = new JSONObject(result);
JSONArray jArray = myJSON.getJSONArray("messages");
然后遍历你的JSONArray ......
int size = jArray.length();
for (int i=0 ; i<size ; i++){
JSONObject itemInArray = jArray.get(i);
// get values inside the object, for example :
String text = itemInArray.getString("text");
}
答案 1 :(得分:3)
您可以在Java中使用旧的http://www.json.org lib:
首先将您的json文件内容读入String; 然后将其解析为JSONObject,如果有数组,则获取数组;
JSONObject myJson = new JSONObject(myJsonString);
// get the JsonArray
JSONArray jArray = jobj.getJSONArray("messages");
//Loop through the array to get the JSONObjects
for(int i=0;i<jArray.length();i++) {
// use myJson as needed, for example
int id = jArray.getJsonobject(i).getString("id");
// etc
}
答案 2 :(得分:2)
您JSONArray
位于JSONObject
这样做是为了得到数据
@Override
protected void onPostExecute(String result) {
try {
JSONObject jobj = new JSONObject(result);
JSONArray jArray = jobj.getJSONArray("messages");
for(int i=0;i<jArray.length();i++) {
String created=jArray.getJsonobject(i).getString("created");
}
}