提取JSON值,这是一个数组

时间:2015-05-10 19:58:45

标签: java arrays json key-value

我正在尝试从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.

     }

请有人在这里指导我。

感谢, 凯

3 个答案:

答案 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