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.

pengguna2010955
sumber

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();
Grammin
sumber
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 :)

Naeem A. Malik
sumber
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;
  }
Manasi
sumber
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;
MSD
sumber