วิธีสร้าง JSONArray ที่ถูกต้องใน Java โดยใช้ JSONObject


130

ฉันจะสร้าง JSON Object ดังต่อไปนี้ใน Java โดยใช้ 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"}
    ]
}

ฉันพบตัวอย่างมากมาย แต่ไม่ใช่สตริง JSONArray ของฉัน

คำตอบ:


247

นี่คือรหัสบางส่วนที่ใช้ java 6 เพื่อเริ่มต้น:

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

แก้ไข:เนื่องจากมีความสับสนมากมายเกี่ยวกับputvs addที่นี่ฉันจะพยายามอธิบายความแตกต่าง ใน java 6 org.json JSONArrayมีputเมธอดและใน java 7 javax.jsonมีaddเมธอด

ตัวอย่างของสิ่งนี้โดยใช้รูปแบบตัวสร้างใน java 7 มีลักษณะดังนี้:

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

3
อาจจะลอง / จับ? (หรือวิธีการต้องมีคำสั่งพ่น)
Lukas1

8
JSONArray ไม่มีวิธีการใส่
จิม

2
ใช้เพิ่มแทนการใส่
CleanX

1
@PT_C ใช่ JsonObject jo = Json.createObjectBuilder (); jo.add ("firstName", "จอห์น"); jo.add ("lastName", "Doe"); jo.build ();
Grammin

1
@ArnoldBrown ในการเพิ่มอาร์เรย์ให้กับ mainObj นั้นจะต้องมีคีย์
Grammin

15

ฉันคิดว่าคุณได้รับ JSON นี้จากเซิร์ฟเวอร์หรือไฟล์และคุณต้องการสร้างออบเจ็กต์ JSONArray จากมัน

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

หวังว่านี่จะช่วยได้ :)


11

สามารถเขียนวิธีการใช้ซ้ำขนาดเล็กสำหรับการสร้างวัตถุ json บุคคลเพื่อหลีกเลี่ยงรหัสซ้ำ

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

โปรดลองสิ่งนี้ ... หวังว่าจะช่วยได้

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;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.