I have a very large response from server of JSON string. I converted it to JSON object and then get the keys and iterate it.
The problem is that when I iterate it isnt in the same order as in response from server.
Next then I apply another method by adding all the keys in List<String>
and the sort it and then get the iterator of that but still it isn't as I required (as in response).
Code example is here:
JSONObject jsonObject = new JSONObject(responseString); Iterator<String> myIter = jsonObject.keys(); List<String> sortKey = new ArrayList<String>(); while(myIter.hasNext()){ sortKey.add(myIter.next()); } Collections.sort(sortKey);
You can use Sorted map to put keys and values into. Something like this
public static List listFromJsonSorted(JSONObject json) { if (json == null) return null; SortedMap map = new TreeMap(); Iterator i = json.keys(); while (i.hasNext()) { try { String key = i.next().toString(); JSONObject j = json.getJSONObject(key); map.put(key, j); } catch (JSONException e) { e.printStackTrace(); } } return new LinkedList(map.values()); }
The order of the keys of a JSON object is not supposed to be meaningful. If you want a specific order, you should use an array, not an object.
Your Java code sorts the keys alphabetically. There is no way to get the initial ordering of the keys in the object.
Reference 1:
The order of the keys is undefined
Reference 2:
An object is an unordered set of name/value pairs
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With