【发布时间】:2015-10-02 10:08:37
【问题描述】:
当您在JSONObject 中添加数据时,它将以自己的方式存储。
这是我要传达的示例。
JSONObject obj = new JSONObject();
obj.put("metricname", "splunk-ui");
obj.put("timestamp", 1234567890);
obj.put("value",34);
System.out.println(obj);
上面的代码 sn-p 将给出下面的输出。
{
"metricname": "splunk-ui",
"value": 34,
"timestamp": 1234567890
}
这是问题所在:-
我按以下顺序添加数据:- metricname,timestamp,value
这是显示顺序:- metricname,value,timestamp
那么,我如何在JSONObject 中强制执行我的数据添加顺序??
仅供参考:- 这样做是强制性的,因为我会将这个 JSON 对象传递给另一个 API,该 API 可以扫描 metricname、timestamp、value 中的数据。
我在这里发布用于解决此问题的代码片段:-
我已使用 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);
【问题讨论】:
-
JSON 对象的属性没有顺序。这并不特定于 Java 或任何实现。如果需要特定顺序,则必须使用 JSON 中的数组,而不是对象。确保您了解其中的区别。