我试图使用JSON Object
构造一个JSON字符串我希望以这种方式构造JSON字符串
{
"Level": "3",
"Name": "testLogger",
"IPADDRESS": "testMachiene",
"Message": "hiiiiiiiiii",
"TimeStamp": "test12345678"
}
这是我这样做的简单程序
package com;
import org.json.JSONObject;
public class Teste {
public static void main(String args[]) throws Exception {
int loglevel = 3;
String loggerName = "testLogger";
String machieneName = "testMachiene";
String timeStamp = "test12345678";
String message = "hiiiiiiiiii";
JSONObject obj = new JSONObject();
obj.put("TimeStamp", message);
obj.put("Message", timeStamp);
obj.put("IPADDRESS", machieneName);
obj.put("Name", loggerName);
obj.put("Level", loglevel);
System.out.println(obj.toString());
}
}
它正在构建这种方式
{
"Name": "testLogger",
"TimeStamp": "hiiiiiiiiii",
"Message": "test12345678",
"Level": 3,
"IPADDRESS": "testMachiene"
}
我的问题是为什么它改变了属性的顺序
我可以订购我想要的订单吗?
答案 0 :(得分:29)
请在此处查看答案:JSON order mixed up
你不能也不应该依赖于一个元素的排序 JSON对象。
来自http://www.json.org/的JSON规范:
“对象是一组无序的名称/值对”
因此,JSON库可以根据需要自由重新排列元素的顺序。这不是一个错误。
答案 1 :(得分:11)
Json包含两种结构化类型(对象和数组)。
物件:
An object is an `unordered collection` of zero or more name/value
对,其中名称是字符串,值是字符串,数字, boolean,null,object或array。
数组:
数组是零个或多个值的ordered sequence
。
术语“对象”和“数组”来自JavaScript的约定。所以它是一个使它成为无序的对象实现。 有关JSON的更多信息,请参阅以下链接中的RFC-4627 !!
http://www.ietf.org/rfc/rfc4627.txt
由于
答案 2 :(得分:2)
JSONObject实际上是值键的映射。它没有固有的顺序。如果你想要订购的东西,你可能想要查看JSONArray(但是它没有键 - >值,只是值)。
答案 3 :(得分:1)
正如其他人所提到的,JSONObject不应该保持相同的顺序。
但是,如果您确实希望订购商品,则可以自行实施,并使用LinkedHashMap作为您班级商品的容器。