JSONObject를 사용하여 Java에서 올바른 JSONArray를 작성하는 방법


129

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 문자열은 아닙니다.

답변:


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

편집 : 에 대해 많은 혼란이 되었기 때문에 putadd여기에 내가 차이를 설명하려고합니다. java 6에서는 org.json.JSONArrayput메소드를 포함하고 java 7에서는 javax.jsonadd메소드를 포함합니다 .

Java 7에서 빌더 패턴을 사용하는 예는 다음과 같습니다.

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

3
어쩌면 시도 / 캐치에 싸서? (또는 방법은 throw 문을해야합니다)
Lukas1

8
JSONArray에는 put 메소드가 없습니다.
Jim

2
put 대신 add 사용
CleanX

1
@PT_C yep JsonObject jo = Json.createObjectBuilder (); jo.add ( "firstName", "John"); 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

중복 코드를 피하기 위해 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;
  }

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.