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)
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 문자열로 표현됨
'Java > Base' 카테고리의 다른 글
[Java] 웹 페이지의 JSON을 가져와 DB 테이블에 삽입하기 (0) | 2023.03.16 |
---|---|
[Java] Gson 클래스를 활용한 JSON Phasing (0) | 2023.03.15 |
[Java] Statement와 PreparedStatement (1) | 2023.03.12 |
[Java] Java로 SQL CRUD 구현하기 (0) | 2023.03.09 |
[Java] Java와 MySQL 데이터베이스 연결하기 (0) | 2023.03.09 |