在
json-simple文档中有一个非常好的KeyFinder示例
但是如果我尝试获取一个数组,它只会返回我第一个元素杰森
{"foo":
{"bar":
{"foobar":{
"items":["item1","item2","item3"]
}
}
}
}
如果我使用 keyFinder 的示例并搜索"项目",我只会得到"item1",而我希望能够使用整个数组。
keyFinder 的功能/工作方式的示例:
KeyFinder finder = new KeyFinder();
finder.setMatchKey("items");
try{
while(!finder.isEnd()){
if(finder.isFound)
System.out.println("finder.getValue() -->" + finder.getValue()
}
}//...
我目前是怎么做的:
Object obj = parser.parse(jsonText);
JSONObject jsonObject = (JSONObject) obj;
JSONObject jsonTags = (JSONObject) ((JSONObject) ((JSONObject) jsonObject.get("foo")).get("bar")).get("foobar");
String tags = (String) jsonTags.get("items").toString().replaceAll("[^A-Za-z0-9,]","");
String[] vaca = tags.split(",");
for(String s : vaca) {
list.add(s);
System.out.println(s);
}
我的问题是如何在不知道"路径"的情况下获取数组 foo>> 栏>> foobar 以通过其键获取"项目"数组。
它将为您提供完整的数组。你犯的一个错误是你没有把foo
、bar
和foobar
包裹在""
中。它应该是这样的:
{"foo":
{"bar":
{"foobar":{
"items":["item1","item2","item3"]
}
}
}
}
我试过你的代码
JSONParser parser = new JSONParser();
Object obj = parser.parse(jsonText);
JSONObject jsonObject = (JSONObject) obj;
JSONObject jsonTags = (JSONObject) ((JSONObject) ((JSONObject) jsonObject.get("foo")).get("bar")).get("foobar");
String tags = (String) jsonTags.get("items").toString().replaceAll("[^A-Za-z0-9,]","");
String[] vaca = tags.split(",");
List<String> list = new ArrayList<>();
for(String s : vaca) {
list.add(s);
System.out.println(s);
}
输出为:
item1
item2
item3