4

我正在创建一个 JSON 对象,我在其中添加一个键和一个作为数组的值。键和值的值都来自具有排序形式数据的 TreeSet。但是,当我在我的 json 对象中插入数据时,它是随机存储的,没有任何顺序。这是我目前的 json 对象:

{
    "SPAIN":["SPAIN","this"],
    "TAIWAN":["TAIWAN","this"],
    "NORWAY":["NORWAY","this"],
    "LATIN_AMERICA":["LATIN_AMERICA","this"]
}

我的代码是:

 Iterator<String> it= MyTreeSet.iterator();

        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);
        }

有什么方法可以将数据存储到while循环本身的json对象中?

4

3 回答 3

8

即使这篇文章很老,我认为值得发布一个没有 GSON 的替代品:

首先将您的键存储在 ArrayList 中,然后对其进行排序并循环遍历键的 ArrayList:

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);
}
于 2015-08-27T09:45:34.853 回答
1

它适用于谷歌 Gson API。试试看。

    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();
    }
于 2013-10-21T12:04:57.743 回答
0

以下是该文档从http://www.json.org/java/index.html中所说的内容。

“JSONObject 是名称/值对的无序集合。”

“一个 JSONArray 是一个有序的值序列。”

为了获得排序的 Json 对象,您可以使用 Gson,@user748316 已经提供了一个很好的答案。

于 2013-10-21T12:48:19.860 回答