如何在Java中阅读JSON?

时间:2015-03-16 06:32:28

标签: java json string

我有一个JSON字符串,我将data元素的数据提供给JSONObject。在我读完之后,结果字符串如下。我正在使用org.json库。

String dataStr = "[{\"name\":\"jhonny\",\"counts\":[\"50\",\"44\",\"46\"],\"url\":\"google\"},
 {\"name\":\"john\",\"counts\":[\"344\",\"4\",\"18\"],\"url\":\"yahoo\"}]";

我试着阅读下面的每个元素,

String dataStr = report.get("data").toString();
JSONObject data = new JSONObject(dataStr.substring(1));
System.out.println(data);

但我的输出是,

{"name":"jhonny","counts":["50","44","46"],"url":"google"}

输出只包含一个元素。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

使用org.json库:

JSONObject obj = new JSONObject("{interests : [{interestKey:Dogs}, {interestKey:Cats}]}");

List<String> list = new ArrayList<String>();
JSONArray array = obj.getJSONArray("interests");
for(int i = 0 ; i < array.length() ; i++){
    list.add(array.getJSONObject(i).getString("interestKey"));
}

答案 1 :(得分:2)

JSONArray jsonarray = new JSONArray(datastr);
for(int i=0; i<jsonarray.length(); i++){
    JSONObject data= jsonarray.getJSONObject(i);

    System.out.println(data);
}   

答案 2 :(得分:1)

问题是你正在尝试将JSONArray作为JSONObject读取。

要解析JSONArray,您需要执行以下操作:(不确定您使用的是哪个库)

for (int i = 0; i < jsonarray.length(); i++) {
    JSONObject jsonobject = jsonarray.getJSONObject(i);
    // jsonobject holds the desired element.
}

答案 3 :(得分:0)

如果你分析你的json字符串,你会注意到你的json字符串包含多个没有外部对象的json对象,如: -

{ 
"outer":{
          {\"name\":\"jhonny\",\"counts\":[\"50\",\"44\",\"46\"],\"url\":\"google\"},
          {\"name\":\"jhonny\",\"counts\":[\"50\",\"44\",\"46\"],\"url\":\"google\"}
        }
}

解析方式需要这种json结构。你的json字符串实际上只是一个jsonarray。所以这样做:

JSONArray jsonarray = new JSONArray(datastr);
for(int i=0; i<jsonarray.length(); i++){
    JSONObject data= jsonarray.getJSONObject(i);
}

有关详情,请访问此链接,为how to read json in java

提供了很好的解释