Cara membuat JSONArray yang benar di Java menggunakan JSONObject


129

bagaimana cara membuat Obyek JSON seperti berikut, di Jawa menggunakan JSONObject?

{
    "employees": [
        {"firstName": "John", "lastName": "Doe"}, 
        {"firstName": "Anna", "lastName": "Smith"}, 
        {"firstName": "Peter", "lastName": "Jones"}
    ],
    "manager": [
        {"firstName": "John", "lastName": "Doe"}, 
        {"firstName": "Anna", "lastName": "Smith"}, 
        {"firstName": "Peter", "lastName": "Jones"}
    ]
}

Saya telah menemukan banyak contoh, tetapi bukan string JSONArray saya yang sebenarnya.

Jawaban:


247

Berikut ini beberapa kode menggunakan java 6 untuk membantu Anda memulai:

JSONObject jo = new JSONObject();
jo.put("firstName", "John");
jo.put("lastName", "Doe");

JSONArray ja = new JSONArray();
ja.put(jo);

JSONObject mainObj = new JSONObject();
mainObj.put("employees", ja);

Sunting: Karena ada banyak kebingungan tentang putvs di addsini saya akan mencoba menjelaskan perbedaannya. Di java 6 org.json.JSONArray berisi putmetode dan di java 7 javax.json berisi addmetode.

Contoh dari ini menggunakan pola builder di java 7 terlihat seperti ini:

JsonObject jo = Json.createObjectBuilder()
  .add("employees", Json.createArrayBuilder()
    .add(Json.createObjectBuilder()
      .add("firstName", "John")
      .add("lastName", "Doe")))
  .build();

3
mungkin juga membungkus try / catch? (atau metode harus memiliki pernyataan melempar)
Lukas1

8
JSONArray tidak memiliki metode put.
Jim

2
gunakan add bukannya put
CleanX

1
@PT_C ya JsonObject jo = Json.createObjectBuilder (); jo.add ("Nama depan", "John"); jo.add ("lastName", "Doe"); jo.build ();
Grammin

1
@ArnoldBrown Untuk menambahkan array ke mainObj, ia harus memiliki kunci.
Grammin

15

Saya kira Anda mendapatkan JSON ini dari server atau file, dan Anda ingin membuat objek JSONArray darinya.

String strJSON = ""; // your string goes here
JSONArray jArray = (JSONArray) new JSONTokener(strJSON).nextValue();
// once you get the array, you may check items like
JSONOBject jObject = jArray.getJSONObject(0);

Semoga ini membantu :)


11

Metode reusable kecil dapat ditulis untuk membuat objek json orang untuk menghindari kode duplikat

JSONObject  getPerson(String firstName, String lastName){
   JSONObject person = new JSONObject();
   person .put("firstName", firstName);
   person .put("lastName", lastName);
   return person ;
} 

public JSONObject getJsonResponse(){

    JSONArray employees = new JSONArray();
    employees.put(getPerson("John","Doe"));
    employees.put(getPerson("Anna","Smith"));
    employees.put(getPerson("Peter","Jones"));

    JSONArray managers = new JSONArray();
    managers.put(getPerson("John","Doe"));
    managers.put(getPerson("Anna","Smith"));
    managers.put(getPerson("Peter","Jones"));

    JSONObject response= new JSONObject();
    response.put("employees", employees );
    response.put("manager", managers );
    return response;
  }

1

Silakan coba ini ... semoga membantu

JSONObject jsonObj1=null;
JSONObject jsonObj2=null;
JSONArray array=new JSONArray();
JSONArray array2=new JSONArray();

jsonObj1=new JSONObject();
jsonObj2=new JSONObject();


array.put(new JSONObject().put("firstName", "John").put("lastName","Doe"))
.put(new JSONObject().put("firstName", "Anna").put("v", "Smith"))
.put(new JSONObject().put("firstName", "Peter").put("v", "Jones"));

array2.put(new JSONObject().put("firstName", "John").put("lastName","Doe"))
.put(new JSONObject().put("firstName", "Anna").put("v", "Smith"))
.put(new JSONObject().put("firstName", "Peter").put("v", "Jones"));

jsonObj1.put("employees", array);
jsonObj1.put("manager", array2);

Response response = null;
response = Response.status(Status.OK).entity(jsonObj1.toString()).build();
return response;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.