How can I iterate JSONObject to get individual items

前端 未结 2 848
南方客
南方客 2020-11-30 03:19

This is my below code from which I need to parse the JSONObject to get individual items. This is the first time I am working with JSON. So not sure how to parse

相关标签:
2条回答
  • 2020-11-30 03:49

    You can try this it will recursively find all key values in a json object and constructs as a map . You can simply get which key you want from the Map .

    public static Map<String,String> parse(JSONObject json , Map<String,String> out) throws JSONException{
        Iterator<String> keys = json.keys();
        while(keys.hasNext()){
            String key = keys.next();
            String val = null;
            try{
                 JSONObject value = json.getJSONObject(key);
                 parse(value,out);
            }catch(Exception e){
                val = json.getString(key);
            }
    
            if(val != null){
                out.put(key,val);
            }
        }
        return out;
    }
    
     public static void main(String[] args) throws JSONException {
    
        String json = "{'ipinfo': {'ip_address': '131.208.128.15','ip_type': 'Mapped','Location': {'continent': 'north america','latitude': 30.1,'longitude': -81.714,'CountryData': {'country': 'united states','country_code': 'us'},'region': 'southeast','StateData': {'state': 'florida','state_code': 'fl'},'CityData': {'city': 'fleming island','postal_code': '32003','time_zone': -5}}}}";
    
        JSONObject object = new JSONObject(json);
    
        JSONObject info = object.getJSONObject("ipinfo");
    
        Map<String,String> out = new HashMap<String, String>();
    
        parse(info,out);
    
        String latitude = out.get("latitude");
        String longitude = out.get("longitude");
        String city = out.get("city");
        String state = out.get("state");
        String country = out.get("country");
        String postal = out.get("postal_code");
    
        System.out.println("Latitude : " + latitude + " LongiTude : " + longitude + " City : "+city + " State : "+ state + " Country : "+country+" postal "+postal);
    
        System.out.println("ALL VALUE " + out);
    
    }
    

    Output:

        Latitude : 30.1 LongiTude : -81.714 City : fleming island State : florida Country : united states postal 32003
    ALL VALUE {region=southeast, ip_type=Mapped, state_code=fl, state=florida, country_code=us, city=fleming island, country=united states, time_zone=-5, ip_address=131.208.128.15, postal_code=32003, continent=north america, longitude=-81.714, latitude=30.1}
    
    0 讨论(0)
  • 2020-11-30 04:10

    How about this?

    JSONObject jsonObject = new JSONObject           (YOUR_JSON_STRING);
    JSONObject ipinfo     = jsonObject.getJSONObject ("ipinfo");
    String     ip_address = ipinfo.getString         ("ip_address");
    JSONObject location   = ipinfo.getJSONObject     ("Location");
    String     latitude   = location.getString       ("latitude");
    System.out.println (latitude);
    

    This sample code using "org.json.JSONObject"

    0 讨论(0)
提交回复
热议问题