Java 以编程方式创建复杂的JSONArray?
根据我所阅读的内容,下面的示例是一个Java 以编程方式创建复杂的JSONArray?,java,json,Java,Json,根据我所阅读的内容,下面的示例是一个JSONArray 我最困惑的是如何添加顶部的“header”信息和嵌套的“Position”JSONObject作为最后一个属性。我知道基本JSONObject是如何创建的,也知道基本JSONArray是如何创建的,但是这个组合的JSONArray真的让我很反感 { "source": "REMOTE", "msgType": "event", "properties": [ { "IMEI":
JSONArray
我最困惑的是如何添加顶部的“header”信息和嵌套的“Position”JSONObject作为最后一个属性。我知道基本JSONObject是如何创建的,也知道基本JSONArray是如何创建的,但是这个组合的JSONArray真的让我很反感
{
"source": "REMOTE",
"msgType": "event",
"properties": [
{
"IMEI": {
"string": "1234567890"
}
},
{
"My Time": {
"string": "5/4/2016 12:00:00"
}
},
{
"Position": {
"geographicPosition": {
"latitude": 34.89767579999999,
"longitude": -72.03648269999997
}
}
}
]
}
试试这个:
try {
JSONObject mainObject = new JSONObject();
mainObject.put("source", "REMOTE");
mainObject.put("msgType", "event");
JSONArray mainArray = new JSONArray();
JSONObject arrayObj = new JSONObject();
JSONObject temp = new JSONObject();
temp.put("string", "1234567890");
arrayObj.put("IMEI", temp);
mainArray.put(arrayObj);
arrayObj = new JSONObject();
temp = new JSONObject();
temp.put("string", "5/4/2016 12:00:00");
arrayObj.put("My Time", temp);
mainArray.put(arrayObj);
arrayObj = new JSONObject();
temp = new JSONObject();
JSONObject temp1 = new JSONObject();
temp1.put("latitude",34.89767579999999);
temp1.put("longitude",-72.03648269999997);
temp.put("geographicPosition", temp1);
arrayObj.put("Position", temp);
mainArray.put(arrayObj);
mainObject.put("properties", mainArray);
// mainOject is your required Json
System.out.println(mainObject);
} catch (Exception e) {
e.printStackTrace();
}
你也可以这样做
JSONObject jsonObj = new JSONObject(json_response);
String source = jsonObj.getString("source");
String msgType = jsonObj.getString("msgType");
JSONArray jsonArray = jsonObj.getJSONArray("properties");
JSONObject IMEIObject = jsonArray.getJSONObject("IMEI");
String IMEI = IMEIObject.getJSONString("string");
JSONObject myTimeObject = jsonArray.getJSONObject("My Time");
String myTime = myTimeObject.getJSONString("string");
JSONObject posObject = jsonArray.getJSONObject("Position");
JSONObject lljsonObject = posObject.getJSONObject("geographicPosition");
String latitude = lljsonObject.getJSONString(String.valueOf("latitude"));
String longitude = lljsonObject.getJSONString(String.valueOf("longitude"));
试试伟大的。他们有一个例子,展示了如何创建数组。以下是他们想要创建的模板:
{
"firstName": "John", "lastName": "Smith", "age": 25,
"address" : {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021"
},
"phoneNumber": [
{ "type": "home", "number": "212 555-1234" },
{ "type": "fax", "number": "646 555-4567" }
]
}
他们就是这样做的:
\\ You can pass `null` to the `config`
JsonBuilderFactory factory = Json.createBuilderFactory(config);
JsonObject value = factory.createObjectBuilder()
.add("firstName", "John")
.add("lastName", "Smith")
.add("age", 25)
.add("address", factory.createObjectBuilder()
.add("streetAddress", "21 2nd Street")
.add("city", "New York")
.add("state", "NY")
.add("postalCode", "10021"))
.add("phoneNumber", factory.createArrayBuilder()
.add(factory.createObjectBuilder()
.add("type", "home")
.add("number", "212 555-1234"))
.add(factory.createObjectBuilder()
.add("type", "fax")
.add("number", "646 555-4567")))
.build();
你需要回答的问题是什么?上面的示例代码是我需要创建的。我不知道如何用Java代码实现它。您想使用已知的实现还是您自己的实现来创建JSON对象?在我的代码中,我有需要进入该数组的所有变量,例如位置和时间数据。我只是不知道如何将这个结构创建为JSONArray对象。非常感谢。它工作得很好,结构非常清晰易懂。谢谢你让我知道这一点。我会努力的。