[英]java Error parsing JsonObject
我正在为Java做一个json解析器。 我将json作为字符串接收,然后尝试获取所有键值
这是我的Json琴弦
{ "Message":{"field": [ {"bit":2,"name":"AAA"}, {"bit":3,"name":"BBB"}]}}
这是我的解析器:
JSONObject jObject = new JSONObject(result); //result contains the json
JSONArray info = jObject.getJSONArray("field");
for (int i = 0 ; i < info.length(); i++) {
JSONObject obj = info.getJSONObject(i);
Iterator<String> keys = obj.keys();
while (keys.hasNext()) { //I use key - value cause the json can change
String key = keys.next();
System.out.println("Key: " + key + "\tValue: " + obj.get(key));
}
}
但是每次我运行代码时,我都会得到:
Error parsing json org.json.JSONException: JSONObject["field"] not found.
我猜该字段是一个JsonArray ...我错了吗?
感谢您的时间
您是一个太深的层次,想要从jObject
获取field
。 您需要做:
JSONObject jObject = new JSONObject(result);
JSONObject jMsg = jObject.getJSONObject("Message");
JSONArray info = jMsg.getJSONArray("field");
您需要从JSONObjct
Message
获取JSONArray
field
String result = "{ \"Message\":{\"field\": [ {\"bit\":2,\"name\":\"AAA\"}, {\"bit\":3,\"name\":\"BBB\"}]}}";
JSONObject jObject = new JSONObject(result).getJSONObject("Message"); //result contains the json
JSONArray info = jObject.getJSONArray("field");
for (int i = 0 ; i < info.length(); i++) {
JSONObject obj = info.getJSONObject(i);
Iterator<String> keys = obj.keys();
while (keys.hasNext()) { //I use key - value cause the json can change
String key = keys.next();
System.out.println("Key: " + key + "\tValue: " + obj.get(key));
}
}
输出:
Key: name Value: AAA
Key: bit Value: 2
Key: name Value: BBB
Key: bit Value: 3
尝试这个:
String result = "{ \"Message\":{\"field\": [ {\"bit\":2,\"name\":\"AAA\"}, {\"bit\":3,\"name\":\"BBB\"}]}}";
JSONObject jObject = new JSONObject(result); //result contains the json
JSONArray info = jObject.getJSONObject("Message").getJSONArray("field");
for (int i = 0 ; i < info.length(); i++) {
JSONObject obj = info.getJSONObject(i);
Iterator<String> keys = obj.keys();
while (keys.hasNext()) { //I use key - value cause the json can change
String key = keys.next();
System.out.println("Key: " + key + "\tValue: " + obj.get(key));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.