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对象。非常感谢。它工作得很好,结构非常清晰易懂。谢谢你让我知道这一点。我会努力的。