当您在JSONObject
中添加数据时,它将以自己的方式存储。
以下是我要传达的例子。
JSONObject obj = new JSONObject();
obj.put("metricname", "splunk-ui");
obj.put("timestamp", 1234567890);
obj.put("value",34);
System.out.println(obj);
以上代码段会给出以下输出。
{
"metricname": "splunk-ui",
"value": 34,
"timestamp": 1234567890
}
以下是问题: -
我按以下顺序添加数据: - metricname
,timestamp
,value
这是显示顺序: - metricname
,value
,timestamp
那么,我如何在JSONObject
??
仅供参考: - 这样做是可以接受的,因为我会将此JSON对象传递给另一个可以仅扫描metricname
,timestamp
,value
中的数据的API
在这里,我发布了解决这个问题的代码片段: -
我使用了GSON库和此链接来使这段代码正常工作。 GSON Documention
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("metric", "mihirmonani");
jsonObject.addProperty("timestamp", 1346846400);
jsonObject.addProperty("value", 14);
JsonArray jArray = new JsonArray();
JsonObject jObject = new JsonObject();
jObject.addProperty("host", "splunk");
jObject.addProperty("host1", "splunk1");
jsonObject.add("tags",jObject);
System.out.println(jsonObject);
答案 0 :(得分:0)
您无法使用JSONObject保持订单的唯一方法是使用JSONArray
[
{"name" : "metricname", "value" : "splunk-ui"},
{"name" : "value", "value" : 34},
{"name" : "timestamp", "value" : 1234567890}
]
答案 1 :(得分:0)
简短回答:你不能。 JSONObject
在内部使用HashMap
,它会根据哈希码的顺序返回值。
您可以使用JSONWriter
显式写入值。
编辑:为了澄清,正如Manu指出的那样,在将值放入JSONObject
之后,您无法检索订单。我的建议是不要将值放在JSONObject
开头,而是使用JSONWriter
直接写入值。