2016-05-06 10 views
-2

私が読んだことから、以下の例はJSONArrayです。複雑なJSONArrayをプログラムで作成しますか?

最後のプロパティとして、先頭の「ヘッダー」情報と入れ子にされた「位置」JSONObjectを追加するのが最も混乱します。私は基本的なJSONObjectと同様に、基本的なJSONObjectがどのように作成されるのか知っていますが、この結合されたJSONObjectは本当に私を捨ててしまいます。

{ 
    "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 
       } 
      } 
     } 
    ] 
} 
+0

あなたが答える必要がある、あなたの質問は何ですか? – ManoDestra

+0

上記のコード例は私が作成する必要があります。 Javaコードで実装する方法がわかりません。 – SirFerret

+0

既知の実装を使用してJSONオブジェクトを作成するか、独自の実装を使用してJSONオブジェクトを作成しますか? – MaxG

答えて

2

これを試してみてください:

 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(); 
     } 
+0

ありがとうございます。それは素晴らしい作品、構造は非常に明確で理解しやすいです。 – SirFerret

0

また、このように行うことができます。..

 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")); 
0

を偉大oracle documentationを試してみてください。彼らには、配列の作成方法を示す例があります。

{ 
    "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(); 
+0

私にそれを知らせてくれてありがとう。私はより良い努力をします。 – MaxG

関連する問題