0

I try to parse a simple json dictionary, so I read many tutorials and threads on how to achieve this

but there is no "keys()" nor "keySet()" defined for JSONObject nor JSONArray

I downloaded the library here :

http://www.java2s.com/Code/Jar/j/Downloadjsonsimple111jar.htm

I am starting to wonder if I use the right library

here is my code :

import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

JSONParser parser = new JSONParser();
JSONObject obj = (JSONObject)parser.parse(json.trim());
Iterator keys = obj.keys(); <<<<<<<<<<<<<<<<<<<<<<<<<<<< keys() undefined
while(keys.hasNext()) {
    String key = keys.next();
}

json example :

{a:132,b:"1321",test:"something"}

any help appreciated

thanks

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
phil123456
  • 211
  • 3
  • 13

3 Answers3

0

You can try this:

JSONObject jsonArray = ...//get json object

Iterator<?> keys = jsonArray.keys();

while( keys.hasNext() ) {
    String key = (String) keys.next();
    System.out.println("Value: " + jsonArray.get(key));
    System.out.println("Key: " + key);
}
Sai prateek
  • 11,842
  • 9
  • 51
  • 66
0

I think keySet().iterator() is, what you need:

    JSONParser parser = new JSONParser();
    JSONObject obj = (JSONObject)parser.parse(json.trim());
    Iterator keys = obj.keySet().iterator();
    while(keys.hasNext()) {
        String key = (String)keys.next();
    }
u.sanyo
  • 47
  • 1
  • 7
0

Check the following. You have a few problems I have outlined afterwards.

import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import java.util.*;

public class JavaJson{
    public static void main(String ... args){
        try{
            String json = "{\"name\":\"TEST\"}"; //Or whatever
            JSONParser parser = new JSONParser();
            JSONObject obj = (JSONObject)parser.parse(json.trim());
            Iterator itr = obj.keySet().iterator();
            while(itr.hasNext()){
                System.out.println((String)itr.next());
            }
        }
        catch(ParseException ex){
            ex.printStackTrace();
        }
    }
}

Problems being,

  • It is Iterator itr = obj.keySet().iterator(); not Iterator keys = obj.keys();. JSONObject does not have a definition for keys().
  • Missing import import java.util.*. Iterator is available in there.
  • Should either catch or throw ParseException.
Romeo Sierra
  • 1,666
  • 1
  • 17
  • 35