我有一个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"}
输出只包含一个元素。我该如何解决这个问题?
答案 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
提供了很好的解释