2014-11-05 97 views
0

我是Json解析中的新成员。我收到这在下文中给出的从我的网址JSON数据:Json在android中解析

[ 
    [ 
     { 
      "message": "hdjcjcjjckckckckvkckckck", 
      "timetoken": 14151866297757284 
     }, 
     { 
      "message": "ufjfjfjcjfjchfjdhwjroritkgjcj", 
      "timetoken": 14151869212145692 
     }, 
     { 
      "message": "udjfjfudjcyshdhsnfkfkvkf", 
      "timetoken": 14151869317015766 
     }, 
     { 
      "message": "lvkifjsywjfwhsjvjdjfudjgidufkg", 
      "timetoken": 14151869404695072 
     }, 
     { 
      "message": "ifjfydncydhsxhshfjdjejtlfudj", 
      "timetoken": 14151869494732788 
     }, 
     { 
      "message": "22637485969473849506&#&#*%-&+", 
      "timetoken": 14151869589393336 
     }, 
     { 
      "message": "jcjfjdueywjfusufig", 
      "timetoken": 14151869671994892 
     }, 
     { 
      "message": "ofkdiriflfkkkfkdiidk", 
      "timetoken": 14151869775170644 
     }, 
     { 
      "message": "testing", 
      "timetoken": 14151869895179728 
     }, 
     { 
      "message": 1234567, 
      "timetoken": 14151869986900556 
     }, 
     { 
      "message": 9877653, 
      "timetoken": 14151870106439620 
     }, 
     { 
      "message": "zxcvbnmmkljgdaqerip", 
      "timetoken": 14151870236042386 
     } 
    ], 
    14151866297757284, 
    14151870236042386 
] 

我用这打破JsonArray数据转换成不同的索引等我想在我的活动不同的行,以显示消息和timetoken,像这样:

message: hdjcjcjjckckckckvkckckck 
time token: 14151866297757284 
message: 22637485969473849506&#&#*%-&+ 
time token: 14151869212145693 

请帮我在那里,我本来应该在下面的行代码做:

JSONArray jsonObj = new JSONArray(message.toString()); //message.toString() is the Json Response data 
for (int i = 0; i < jsonObj.length(); i++) { 

} 

我想在我的Textview一个以显示它如上所述。

+1

使用Gson。 https://code.google.com/p/google-gson/ – dzsonni 2014-11-05 13:50:36

回答

1

试试这一个(未测试):

JSONArray jsonObj = new JSONArray(message.toString()); //message.toString() is the Json Response data 
JSONArray array = jsonObj.getJSONArray(0); 
for (int i = 0; i < array.length(); i++) { 
    JSONObject item = array.getJSONObject(i); 
    String mesage = item.getJsonString("message"); 
    String timespan = item.getJsonString("timespan"); 
} 
+2

它无法使用@Roman。我解决了它。实际上它是一个双数组,像Json Array> JsonArray> JsonObject。尝试{JSONArray jsonObj = new JSONArray(message.toString()); JSONArray jArray = new JSONArray(jsonObj.get(0).toString());对于(int i = 0; i 2014-11-06 08:26:22

1

我已经解决了这个问题。实际上,Json字符串具有双Json数组和Json对象。

我把一个Json数组的对象发送给Json对象时发生了错误。现在我已经创建了一个Json Array1的对象,然后将它发送给Json Array2,然后发送Json Array2的对象Json Object

的代码如下:

try { 

     JSONArray jsonObj = new JSONArray(message.toString()); 
     JSONArray jArray = new JSONArray(jsonObj.get(0).toString()); 
           for (int i = 0; i < jArray.length(); i++) { 

     JSONObject c = jArray.getJSONObject(i); 

     String messageString=c.getString("message"); 
     String timeString=c.getString("timetoken"); 
     String abc = timeString; 

      } 

     } 
1

你应该把JSON解析成try-catch块:

try{ 
    JSONArray res = new JSONArray(response.toString()); 
    JSONArray jsonArray = res.getJSONArray(0); 
    for(int i = 0; i < jsonArray.length(); i++){ 
     JSONObject object = jsonArray.getJSONObject(i); 
     String message = object.getString("message"); 
     String token = object.getString("timetoken"); 
    } 
}catch(Exception e){ 
    e.printStackTrace(); 
} 

你有双阵列,所以你有两个JSONArray。实际上,JSONArray通常用[]标记,JSONObject用{}标记。

换句话说{} = JSONObject[] = JSONArray