2013-09-24 117 views
94

làm thế nào tôi có thể tạo một đối tượng JSON như sau, trong Java bằng cách sử dụng JSONObject?Cách tạo JsonArray đúng trong Java bằng cách sử dụng 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"} 
    ] 
} 

Tôi đã tìm thấy rất nhiều ví dụ, nhưng không phải chuỗi chính xác của JSONArray.

Trả lời

196

Dưới đây là một số mã sử dụng java 6 để giúp bạn bắt đầu:

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

Edit: Kể từ khi đã có rất nhiều nhầm lẫn về put vs add ở đây tôi sẽ cố gắng giải thích sự khác biệt. Trong java 6 org.json.JSONArray chứa phương thức put và trong java 7 javax.json chứa phương thức add.

Một ví dụ của việc này bằng cách sử dụng mô hình xây dựng trong java 7 trông giống như sau:

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

có lẽ cũng quấn vào thử/bắt? (hoặc phương pháp phải có tuyên bố ném) – Lukas1

+6

JSONArray không có phương thức đặt. – Jim

+1

sử dụng thêm thay vì đặt – CleanX

9

Tôi cho rằng bạn đang nhận được JSON này từ một máy chủ hoặc một tập tin, và bạn muốn tạo một đối tượng JSONArray ra khỏi nó.

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

Hope this helps :)