我希望有json,因为它插入到此代码中,但它的工作原理不同!我首先想要CustomerID
然后Name
,但这个json首先给出Name
然后CustomerID
。我已经插入了json,但是为什么它会给出不同的结果请帮助我..
JSONObject json = new JSONObject();
try {
json.put("CustomerID", "069C21F1-EE87-4FB4-A129-478AEAA454FF");
json.put("Name", "Name_" + (int) Math.random() * 1000);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:10)
这是JSONObject的预期行为。根据其定义,它说:
一个对象作为一组无序的名称/值对
但是,如果您想要订购它,请执行以下操作:
1. prepare a LinkedHashMap object with elements
2. convert it to JSONObject
示例:强>
Map obj = new LinkedHashMap();
obj.put("a", "String1");
obj.put("b", new Integer(1));
obj.put("c", new Boolean(true));
obj.put("d", "String2");
JSONObject json = new JSONObject(obj);
修改强>
下载此库:
https://github.com/douglascrockford/JSON-java
将所有文件保存在项目的新包中
而不是使用 org.json.JSONObject ,使用从下载的库中添加的 your.package.JSONObject 。
现在打开 JSONObject.java 文件,并在构造函数中将 HashMap()更改为 LinkedHashMap()
public JSONObject(Map map)
答案 1 :(得分:1)
您可以在CustomerID行之前放置该名称以满足您自己,但这根本不会产生任何影响。因为来自json的数据是以键值对的形式提取的。它独立于它所处的顺序。
答案 2 :(得分:0)
您可以使用accumulative()
答案 3 :(得分:0)
Gson如果你的朋友。这会将有序地图打印成有序的JSON字符串。
我使用的是最新版本的Gson(2.3.1),您可以通过本文底部的以下选项下载。
import java.util.LinkedHashMap;
import java.util.Map;
import com.google.gson.Gson;
public class OrderedJson {
public static void main(String[] args) {
// Create a new ordered map.
Map<String,String> myLinkedHashMap = new LinkedHashMap<String, String>();
// Add items, in-order, to the map.
myLinkedHashMap.put("1", "first");
myLinkedHashMap.put("2", "second");
myLinkedHashMap.put("3", "third");
// Instantiate a new Gson instance.
Gson gson = new Gson();
// Convert the ordered map into an ordered string.
String json = gson.toJson(myLinkedHashMap, LinkedHashMap.class);
// Print ordered string.
System.out.println(json); // {"1":"first","2":"second","3":"third"}
}
}
依赖选项 行家强>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>
<强>摇篮强>
compile 'com.google.code.gson:gson:2.3.1'
或者您可以访问Maven Central了解更多下载选项。