我正在尝试从JSONObect
中的键值对中提取值。结构如下:
{"key1 ":["dog","cat"],"key2":["house","boat"]}
所以,我想提取狗和猫的价值观,也重视房子和船。我在Java中尝试了以下内容:
//obj - has this JSON.
Iterator iter = obj.keys();
for (int i=0; i<len; i++){
String key = (String)iter.next();
System.out.println("Key is --> "+key); //This is correctly giving me the keys.
System.out.println("Value is --> "+clientDetails.getJSONArray(key)); //This is not working. I tried lots of other things but to no avail.
}
请有人在这里指导我。
感谢, 凯
答案 0 :(得分:0)
您应该使用quick-json解析器(https://code.google.com/p/quick-json/)
可以像这样使用:
JsonParserFactory factory=JsonParserFactory.getInstance();
JSONParser parser=factory.newJsonParser();
Map jsonMap=parser.parseJson(jsonString);
经过:How to parse JSON in Java 这家伙很好地解释了。
答案 1 :(得分:0)
我认为你在这里使用了名为clientDetails
的错误变量。你应该在这里使用相同的JSON obj。
上面的代码对我来说很合适,使用相同的obj:
String json = "{\"key1 \":[\"dog\",\"cat\"],\"key2\":[\"house\",\"boat\"]}";
JSONObject obj=new JSONObject(json);
Iterator iter = obj.keys();
for (int i=0; i<obj.length(); i++){
String key = (String)iter.next();
System.out.println("Key is --> "+key);
System.out.println("Value is --> "+obj.getJSONArray(key));
}
答案 2 :(得分:0)
谢谢你的帮助。我找到了问题的答案。这是我如何提取作为键值对的JSON的值,并且值是一个数组。
Iterator iter = obj.keys();
for (int i=0; i<len; i++){
String key = (String)iter.next();
System.out.println("Key is --> "+key);
String[] arr = (String[])clientDetails.get(key); //Here I am extracting the value which is an array, converting it to String array and then storing it in a variable of type String[]. Now I can loop through this "arr"
for (int m=0; m<arr.length;m++){
arr[]m // Can do whatever I want here!
}
谢谢你们! -Kay