Andrew Andrew - 10 months ago 63
Java Question

Sorting a JSONArray string by its date field YYYY-MM-DD hh-mm-ss.sss

I have a JSONArray formatted as a string like this:

[{"2016-11-09 19:01:59.649":" message"},
{"2016-11-09 19:01:05.542":" example"},
{"2016-11-09 19:02:01.394":" one"}]

Is there some efficient way to sort all the JSON objects in chronological order?

Answer Source

Assuming that you have only one entry in your JSONObject instances, you could:

  1. Extract the JSONObject instances from the JSONArray,
  2. Sort the array of JSONObject by comparing the first key of the JSONObjects,
  3. Then create a new JSONArray or re-set values in the old JSONArray.

Something like this:

// Build the source JSONArray
JSONArray array = new JSONArray();
    new JSONObject("{\"2016-11-09 19:01:59.649\":\" message\"}")
    new JSONObject("{\"2016-11-09 19:01:05.542\":\" example\"}")
    new JSONObject("{\"2016-11-09 19:02:01.394\":\" one\"}")

// Extract the JSONObjects
JSONObject[] objects = new JSONObject[array.length()];
for (int i = 0; i < objects.length; i++) {
    objects[i] = array.getJSONObject(i);
// Sort the array of JSONObjects
    (JSONObject o1, JSONObject o2) ->
// Build a new JSONArray from the sorted array
JSONArray array2 = new JSONArray();
for (JSONObject o : objects) {


[{"2016-11-09 19:01:05.542":" example"},{"2016-11-09 19:01:59.649":" message"},{"2016-11-09 19:02:01.394":" one"}]