我正在努力从格式如下的JSON文件中检索一些值:
{
"search": {
"entry": [
{
"found": "identity=9454532,l=big,ton=grand,k=molvi",
"attribute": [
{
"name": "firstname",
"value": [
"Lucas"
]
},
{
"name": "lastname",
"value": [
"Brandon"
]
}
]
}
],
"return": {
"code": 0,
"message": "Success",
"count": 1
}
}
}
我尝试了不同的方法(json,gson,jayway-JsonPath),但我没有设法从“属性”数组中获取值,只有第一个数组中的值。我不知道如何指定“属性”是JSONArray而不是JSONObject或如何设置它的正确路径。 这是我玩的最后一个代码,当它找到一个数组时停止:
public void String nameObtain (String email) throws IOException{
String link = "http://jsonfile/" + email;
JSONObject json = readJsonFromUrl(link);
JSONObject rootObject = json.getJSONObject("search");
JSONArray firstArray = rootObject.getJSONArray("entry");
for (int i = 0, size = firstArray.length(); i < size; i++) {
JSONObject objectInArray = firstArray.getJSONObject(i);
String[] elementNames = JSONObject.getNames(objectInArray);
System.out.printf("%d ELEMENTS IN CURRENT OBJECT:\n", elementNames.length);
for (String elementName : elementNames) {
String value = objectInArray.getString(elementName);
System.out.printf("name=%s, value=%s\n", elementName, value);
}
}
}
我想做的是获得卢卡斯或布兰登的价值观。任何帮助都感激不尽!
答案 0 :(得分:4)
使用的图书馆:
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
检查以下代码并逐步解析
JSONObject search = (JSONObject) jsonObject.get("search");//1
JSONArray entry = (JSONArray) search.get("entry");//2
for (int i = 0; i < entry.size(); i++) {
JSONObject jsonObject1 = (JSONObject) entry.get(i);//3
JSONArray jsonarray1 = (JSONArray) jsonObject1.get("attribute");//4
for (int j = 0; j < jsonarray1.size(); j++) {
System.out.println(((JSONObject) jsonarray1.get(j)).get(
"value").toString());//5
}
}
它将逐步提供所提到的值:
1){“entry”:[{“found”:“identity = 9454532,l = big,ton = grand,k = molvi”,“attribute”:[{“name”:“firstname”,“value” “:[” 卢卡斯 “]},{” 名称 “:” 姓 “ ”值“:[ ”布兰登“]}]}], ”返回“:{ ”代码“:0, ”计数“:1,”消息 “:” 成功“}}
2)[{“found”:“identity = 9454532,l = big,ton = grand,k = molvi”,“attribute”:[{“name”:“firstname”,“value”:[“Lucas “]},{” 名称 “:” 姓”, “值”:[ “布兰登”]}]}]
3){“found”:“identity = 9454532,l = big,ton = grand,k = molvi”,“attribute”:[{“name”:“firstname”,“value”:[“Lucas” ]},{ “名称”: “姓”, “值”:[ “布兰登”]}]}
4)[{“name”:“firstname”,“value”:[“Lucas”]},{“name”:“lastname”,“value”:[“Brandon”]}]
5)[“Lucas”]和[“Brandon”]
所以基本上你必须分别处理JSONObject和JSONArray并相应地进行解析。