인프런 커뮤니티 질문&답변

원도윤님의 프로필 이미지

작성한 질문수

Java TPC 실전프로젝트 (Java API 활용)

JSON API 활용하기(JSON-Java)

JSON API 활용하기(JSON-Java)

작성

·

153

0

package TPC;

import org.json.*;

public class Project01_Bd {

public static void main(String[] args) {

// JSON-Java(org.json)

JSONArray students = new JSONArray(); //JSONArray 생성

JSONObject student = new JSONObject(); // JSONObject객체생성

student.put("name", "홍길동"); // key와 value쌍으로 이루어진 구조인 put메서드를 사용해서 studunt에 데이터를 집어넣는다.

student.put("phone", "010-1111-1111");

student.put("address","서울"); //여기까지가 한사람의 JSON 객체다.

System.out.println(student); //{"address":"서울","phone":"010-1111-1111","name":"홍길동"}

// 여기까지 우리가 JSON으로 굳이 객체를 만들지 않더라도 제이슨 구조가 바로 만들어진다.

students.put(student);

System.out.println(student); //{"address":"서울","phone":"010-1111-1111","name":"홍길동"}

student = new JSONObject(); // 새로운 인스턴스 생성되어 변수에 할당되어 이전 인스턴스에 대한 참조가 대체 (홍길동 -> 나길동)

student.put("name", "나길동");

student.put("phone", "010-1111-1111");

student.put("address","서울");

students.put(student); //배열은 호출 시점에 객체에 대한 참조를 보유하므로 홍길동 -> 나길동으로 재할당 되었더라도 배열은 원래 객체에 대한 참조를 유지한다.

System.out.println(student);//{"address":"서울","phone":"010-1111-1111","name":"나길동"}

System.out.println(students); //[{"address":"서울","phone":"010-1111-1111","name":"홍길동"},{"address":"서울","phone":"010-1111-1111","name":"나길동"}]

}

}

  1. student라는 객체를 홍길동에서 나길동으로 재할당했는데, 배열은 호출시점에 객체에 대한 참조를 보유해서 재할당하더라도 배열은 이전 객체에 대한 참조를 유지한다고 하는데.. 그러면 홍길동은 배열에선 살아있는거고 (?) student 객체에서는 사라진건가요..?.......

  1. 그리고 JSONObject에서 put메서드가 key-value 쌍이라고 설명하셨는데, JSONArray는 왜 put메서드를 객체로 저장하나요? put메서드는 객체에 저장하는지 배열에 저장하는지에 따라 구조가 달라지는건가요?

답변 2

0

원도윤님의 프로필 이미지
원도윤
질문자

답변감사합니다 선생님

1번 질문 관련 추가 질문이 있습니다.


그러면 마지막 student에는 나길동 정보만 들어있는데,
배열은 어떻게 기존 객체 홍길동에 대한 참조를 유지할수있는건가요?

0

박매일님의 프로필 이미지
박매일
지식공유자

1.JSONObject student = new JSONObject(); 이렇게 json객체를 만들면 새로운 객체가 만들어집니다. 처음에 홍길동을 만들고 아래처럼 다시 객체를 만들면 새로운 객체가 만들어 지기때문에 나길동이 들어갑니다.

JSONObject student = new JSONObject();

배열에는 2개의 데이터가 들어가고 마지막 student에는 나길동 정보만 들어가 있겠죠?

 

  1. 배열(JSONArray : [ ])에 하나의 객체(JSONObject : { })를 넣는 부분인데요.

JSONObject를 만들때는 key-value로 만들고 put(key,value)으로 넣은면됩니다.

이렇게 만을어진 JSONObject를 JSONArray에 넣을때는 값만 put(value)으로 넣으면 아래처럼 구조가 되는겁니다.

[{ },{ },{ }]