본문 바로가기
Java

[Java] JSON

by 스응 2023. 3. 15.
728x90
728x90

JSON (JavaScript Object Notation, 제이슨)

  - Key-Value 쌍 or 배열 형태의 데이터를 텍스트(문자열) 형식으로 표현하는 것

      → Java에서 JSON은 '특정한 구조(약속)가 있는 문자열'

  - 경량의 데이터 교환 형식

      → 서버와 클라이언트 간의 교류에서 자주 사용됨

  - 사람과 기계 모두 이해하기 쉬우며 용량이 적음

      → JSON이 XML을 대체해서 데이터 전송에 많이 사용됨

  - JSON 문서 형식은 자바스크립트 객체의 형식을 기반으로 만들어짐

      → 자바스크립트를 이용해서 JSON 형식의 문서를 쉽게 자바스크립트 객체로 변환할 수 있음

 

  - Key에는 항상 쌍따옴표("")를 사용함

#  JSON 데이터 타입

  - String

  - number

  - boolean 

  - object (객체) : { }

  - 배열(array, 리스트) : [ ]

 

1
2
3
4
5
6
7
8
9
10
11
// 예시
 
{
    "name" : "John"// String 타입 value
    "age" : 30// int 타입 value
    "languages" : ["English""Franch""Spanish"], // String 배열(리스트)
    "friend" : [ // 객체 배열(리스트)
        {"name" : "Mary""age" : 28}, // 배열 내 객체
        {"name" : "Peter""age" : 32}
    ]
}
cs

 

 


Parsing (파싱)

  - 원하는 데이터 형식으로 변환하는 것

      → 특정한 규칙이 있는 문자열을 Java에서 사용하는 데이터 형식으로 변환하는 과정

# JSON Parsing

  - JSON 형식의 문자열을 Java Object로 변환하는 것

  - Gson 클래스를 사용하면 편리함

      (사용법 및 활용 예제 : https://young0105.tistory.com/137)

 

 

728x90

JSON 객체 (JsonObject 클래스)

1
2
3
4
5
6
7
8
9
10
11
// 인스턴스화
JsonObject 객체명 = new JsonObject();
 
// JsonObject 객체에 키-값 쌍 추가 (기본 형태)
JO객체.addProperty("키", 값); // 값은 자료형에 맞게 입력
 
// JsonObject 객체에 키-값 쌍 추가 (값이 JsonArray 객체일 경우)
JO객체.add("키", JsonArray객체); // JsonArray가 JsonElement의 자식 클래스여서 가능
 
// 키에 해당하는 값 가져오기
JO객체.get("키");
cs

 

JSON 객체의 배열 (JsonArray 클래스)

1
2
3
4
5
6
7
8
9
10
11
// 인스턴스화
JsonArray 객체명 = new JsonArray(); // 값을 넣지 않으면 "[]" 상태
 
// JsonArray에 JsonObject 추가
JA객체.add(JsonObject객체);
 
// JsonArray 객체에 있는 JsonObject 객체 가져오기
JsonObject targetObject = JA객체.get(인덱스).getAsJsonObject();
 
// 가져온 JsonObject 객체에서 값 가져오기
String targetValue = targetObject.get("키").getAsString(); // 값의 자료형에 맞게
cs

 

 


직렬화 (Serialization)

  - 객체를 일련의 바이트로 변환하는 과정

      → 메모리에 존재하는 객체를 파일로 저장하거나, 네트워크 상에서 전송할 수 있도록 함

           : Marshalling 또는 Encoding

  - 직렬화된 객체는 다시 역직렬화해서 객체로 변환할 수 있음

 

  - Serializable 인터페이스를 구현한 클래스는 직렬화가 가능한 클래스가 됨

  - JSON으로 직렬화 : Java 객체를 JSON 포맷으로 변환하는 것

      → JSON 문자열로 표현됨

320x100
반응형

'Java' 카테고리의 다른 글

[Java] 람다 표현식 (Lambda expression)  (0) 2023.03.22
[Java] 래퍼 클래스 (Wrapper class)  (0) 2023.03.22
[Java] Statement와 PreparedStatemet  (1) 2023.03.12
[Java] 소켓 통신  (0) 2023.03.03
[Java] 입출력 스트림 (I/O Stream)  (1) 2023.03.03

댓글