how to iterate through json objects in java

前端 未结 3 1882
离开以前
离开以前 2021-01-07 00:35

I am trying to iterate through my json file and get required details here is my json

{
\"000\": {
    \"component\": \"c\",
    \"determinantType\": \"dt\",         


        
相关标签:
3条回答
  • 2021-01-07 00:56

    There's not a JSONArray, only a few JSONObjects. Iterate the keys of the main JSONObject with JSONObject.keys().

    public static final String COMPONENT = "component";
    public static final String DT = "determinantType";
    public static final String D = "determinant": "d";
    public static final String HEADER = "header";
    public static final String DV = "determinantvalue";
    
    JSONObject jso = getItFromSomewhere();
    for (Object key : jso.keys()) {
        JSONObject subset = jso.getJSONObject(key);
        String d = subset.getString(D);
        String header = subset.getString(HEADER);
        String dv = subset.getString(DV);
        System.out.println(key + " " + header + " " + d + " " + dv);
    }
    
    0 讨论(0)
  • 2021-01-07 01:01

    try this...

    FileReader file = new FileReader("test.json");
    Object obj = parser.parse(file);
    System.out.println(obj);
    JSONObject jsonObject = (JSONObject) obj;            
    
    Iterator<String> iterator = jsonObject .iterator();  
    
    for(Iterator iterator = jsonObject.keySet().iterator(); iterator.hasNext();) {
        String key = (String) iterator.next();
        System.out.println(jsonObject.get(key));
    }
    
    0 讨论(0)
  • 2021-01-07 01:17

    You don't have an array - you have properties with names of "000" etc. An array would look like this:

    "array": [ {
        "foo": "bar1",
        "baz": "qux1"
      }, {
        "foo": "bar2",
        "baz": "qux2"
      }
    ]
    

    Note the [ ... ] - that's what indicates a JSON array.

    You can iterate through the properties of a JSONObject using keys():

    // Unfortunately keys() just returns a raw Iterator...
    Iterator keys = jsonObject.keys();
    while (keys.hasNext()) {
        Object key = keys.next();
        JSONObject value = jsonObject.getJSONObject((String) key);
        String component = value.getString("component");
        System.out.println(component);
    }
    

    Or:

    @SuppressWarnings("unchecked")
    Iterator<String> keys = (Iterator<String>) jsonObject.keys();
    while (keys.hasNext()) {
        String key = keys.next();
        JSONObject value = jsonObject.getJSONObject(key);
        String component = value.getString("component");
        System.out.println(component);
    }
    
    0 讨论(0)
提交回复
热议问题