我正在创建一个JSON对象,我在其中添加一个键和一个数组值。 key和value的值来自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对象中吗?
答案 0 :(得分:6)
即使这篇文章很老,我认为没有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);
}
答案 1 :(得分:0)
适用于Google 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();
}
答案 2 :(得分:-1)
以下是文档从http://www.json.org/java/index.html所说的内容。
“JSONObject是一个无序的名称/值对集合。”
“JSONArray是一个有序的值序列。”
为了得到一个已排序的Json对象,你可以使用Gson,这已经被@ user748316提供了一个很好的答案。