如何在java中将以下数据作为json对象发送:
{
"name": "abc",
"coordinates": [
[
[
100,
0
],
[
101,
0
],
[
101,
1
],
[
100,
1
],
[
100,
0
]
]
]
}
问题是,由于坐标值既不是原始数据类型,我如何将它作为键值对添加到json对象中。注意:坐标值不是字符串
答案 0 :(得分:3)
该结构是一个对象,包含具有字符串值的属性和具有数组值的另一个属性。该数组包含一个条目,另一个数组,该数组又包含一系列条目,这些条目也是数组。
你如何构建它将取决于你正在使用的JSON库,但是如果你使用的是javax.json
,你可以像这样做 (请参阅下面的更新):
JsonObject obj = Json.createObjectBuilder() // The outer object
.add("name", "abc") // `name`
.add("coordinates", Json.createArrayBuilder() // `coordinates`
.add(Json.createArrayBuilder() // The one entry in `coordinates`
.add(Json.createArrayBuilder() // The various entries...
.add(100)
.add(0)
.build()
)
.add(Json.createArrayBuilder() // ...in the inner array
.add(101)
.add(0)
.build()
)
// ...and so on
.build()
)
.build()
)
.build();
然后如果合适的话:
String json = obj.toString();
现在你说你正在使用org.json
:
JSONObject obj = new JSONObject(); // The outer object
obj.put("name", "abc"); // `name`
JSONArray coordinates = new JSONArray(); // `coordinates`
obj.put("coordinates", coordinates);
JSONArray innerArray = new JSONArray(); // The entry in `coordinates`
coordinates.put(innerArray);
JSONArray entry = new JSONArray(); // The various entries...
entry.put(100);
entry.put(0);
innerArray.put(entry);
entry = new JSONArray(); // ...in the inner array
entry.put(101);
entry.put(0);
innerArray.put(entry);
// ...and so on.
然后如果合适的话:
String json = obj.toString();