简体   繁体   中英

JSONObject start from last key to iterate over the all keys

I have this code block that iterates over the all keys in my JSONObject, jsonObject1 is a json object that has 1 key and bunch of json data as the value of this single key. So it look like this {"singleKey":"{"anotherKey":"anotherValue"}, {"someKey":"someValue"}"}

JSONObject jsonObject1 = new JSONObject(mystring);

Iterator<String> iter = jsonObject1.keys(); 
while(iter.hasNext())
    {
    String key = iter.next();
    JSONObject jsonObject2 = new JSONObject(jsonObject1.getString(key));
    key1 = jsonObject2.getString("key");
    value1 = jsonObject2.getString("value");
    String place += "\n" + key1 + ": " + value1;
    }

What I want is, I want this while loop starts from the last key of the jsonObject2 and iterates over to the first key. So I will start adding to my place string starting from the last value of the jsonObject2. The first value of place string will be someKey: someValue (the last element of the JSONObject).

How can I start this iteration starting from the last key of the json object?

OK, try this (haven't fully tested):

public void jsonMethod(String mystring) throws JSONException {
    JSONObject jsonObject1 = new JSONObject(mystring);
    Iterator<String> iter = jsonObject1.keys();
    ArrayList<String> keySet = new ArrayList<>();
    while(iter.hasNext()){
        keySet.add(iter.next());
    }
    Collections.reverse(keySet);
    for(String myKey: keySet){
        JSONObject jsonObject2 = new JSONObject(jsonObject1.getString(myKey));
        // Do your existing stuff with jsonObject2
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM