如何使用 JSONObject 在 Java 中创建正确的 JSONArray

如何使用 JSONObject 在 Java 中创建如下 JSON 对象?

{
"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 字符串。

579362 次浏览

下面是一些使用 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);

编辑: 由于 putadd之间存在很多混淆,我在这里试着解释一下它们之间的区别。在 java 6中,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();

我假设您从一个服务器或文件获取这个 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);

希望这对你有帮助:)

可重用的方法用于创建 person 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;
}

请试试这个... 希望能有帮助

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;