How can i sort my JSON object based on Key?

后端 未结 3 1411
南旧
南旧 2021-01-13 18:55

I am creating a JSON object in which i am adding a key and a value which is an array. The value for both key and value comes from a TreeSet which has data in sorted form. Ho

相关标签:
3条回答
  • 2021-01-13 19:32

    Even if this post is quite old, I thought it is worth posting an alternative without GSON:

    First store your keys in an ArrayList, then sort it and loop through the ArrayList of keys:

    Iterator<String> it= MyTreeSet.iterator();
    ArrayList<String>keys = new ArrayList();
    
    while (it.hasNext()) {
        keys.add(it.next());
    }
    Collections.sort(keys);
    for (int i = 0; i < keys.size(); i++) {
        String country = keys.get(i);
        System.out.println("----country"+country);
        JSONArray jsonArray = new JSONArray();
        jsonArray.put(country);
        jsonArray.put("this");
    
        jsonObj.put(country, jsonArray);
    }
    
    0 讨论(0)
  • 2021-01-13 19:42

    It works with Google Gson API. Try it out.

        try{
    
            TreeSet<String> MyTreeSet = new TreeSet<String>();
            MyTreeSet.add("SPAIN");
            MyTreeSet.add("TAIWNA");
            MyTreeSet.add("INDIA");
            MyTreeSet.add("JAPAN");
    
            System.out.println(MyTreeSet);
            Iterator<String> it= MyTreeSet.iterator();
            JsonObject gsonObj = new JsonObject();
            JSONObject jsonObj = new JSONObject();
            while (it.hasNext()) {
                String country = it.next();
                System.out.println("----country"+country);
                JSONArray jsonArray = new JSONArray();
                jsonArray.put(country);
                jsonArray.put("this");
    
                jsonObj.put(country, jsonArray);
    
                JsonArray gsonArray = new JsonArray();
    
                gsonArray.add(new JsonPrimitive("country"));
                gsonArray.add(new JsonPrimitive("this"));
                gsonObj.add(country, gsonArray);
            }
            System.out.println(gsonObj.toString());
            System.out.println(jsonObj.toString());
    
    
    
    
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
    0 讨论(0)
  • 2021-01-13 19:45

    Below are what the doc says from http://www.json.org/java/index.html.

    "A JSONObject is an unordered collection of name/value pairs."

    "A JSONArray is an ordered sequence of values. "

    In order to get an sorted Json Object, you can use Gson which is already provided a good answer by @user748316.

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