2017-02-23 23 views
0

JSONArrayに要素を追加する必要があります。要素が既に含まれているため、追加する属性の型を知っている必要があります(整数または文字列など)。 そのオブジェクトをJavaで配列に追加するには?JSONObjectをJSONArrayに追加する

+1

'jsonArray.add(jsonObject);' – Mistalis

+0

あなたはJSON APIを使用していますか?ジャクソンまたはグソンか何か? – Darshit

+0

javaのjson apiについてもっと知るにはhttp://docs.oracle.com/javaee/7/api/javax/json/package-summary.html – xFighter

答えて

0

他の人も示唆しているように、単にJsonArray Builderでaddメソッドを使用できます。

import javax.json.*; 

public class JsonExample { 
    public static void main(String[] args) { 
     JsonObject personObject = Json.createObjectBuilder() 
       .add("name", Json.createObjectBuilder() 
         .add("given", "John") 
         .add("middle", "Edward") 
         .add("surname", "Doe") 
         .build()) 
       .add("age", 42) 
       .add("isMarried", true) 
       .add("address", Json.createObjectBuilder() 
         .add("street", "Main Street") 
         .add("city", "New York") 
         .add("zipCode", "10044") 
         .add("country", "United States") 
         .build()) 
       .add("phoneNumber", Json.createArrayBuilder() 
         .add("+1 (718) 111-1111") 
         .add("+1 (718) 111-1112") 
         .build()) 
       .build(); 

     JsonArray personArray = Json.createArrayBuilder() 
       .add(personObject) // Add person to array. 
       .build(); 

     System.out.println(JsonUtil.prettyPrint(personArray)); 
    } 
} 

これは単にJSON出力の書式設定に使用されます。

import java.io.StringWriter; 
import java.util.*; 
import javax.json.*; 
import javax.json.stream.JsonGenerator; 

/* Based on: http://stackoverflow.com/a/32500882/1762224 */ 
public class JsonUtil { 
    public static String prettyPrint(JsonStructure json) { 
     return jsonFormat(json, JsonGenerator.PRETTY_PRINTING); 
    } 

    public static String jsonFormat(JsonStructure json, String... options) { 
     StringWriter stringWriter = new StringWriter(); 
     Map<String, Boolean> config = buildConfig(options); 
     JsonWriterFactory writerFactory = Json.createWriterFactory(config); 
     JsonWriter jsonWriter = writerFactory.createWriter(stringWriter); 

     jsonWriter.write(json); 
     jsonWriter.close(); 

     return stringWriter.toString(); 
    } 

    private static Map<String, Boolean> buildConfig(String... options) { 
     Map<String, Boolean> config = new HashMap<String, Boolean>(); 

     if (options != null) { 
      for (String option : options) { 
       config.put(option, true); 
      } 
     } 

     return config; 
    } 
} 

この例では、次の依存関係を使用しています。ここでは

apply plugin: 'java' 

repositories { 
    jcenter() 
} 

dependencies { 
    compile 'javax.json:javax.json-api:1.1.0-M1' 
    compile 'org.glassfish:javax.json:1.1.0-M1' 
} 

が出力されます。

[ 
    { 
     "name": { 
      "given": "John", 
      "middle": "Edward", 
      "surname": "Doe" 
     }, 
     "age": 42, 
     "isMarried": true, 
     "address": { 
      "street": "Main Street", 
      "city": "New York", 
      "zipCode": "10044", 
      "country": "United States" 
     }, 
     "phoneNumber": [ 
      "+1 (718) 111-1111", 
      "+1 (718) 111-1112" 
     ] 
    } 
] 
関連する問題