⭐ JSON
- 데이터 교환을 위해 만들어진 객체 포맷
📌 전송 가능 조건
- 수신/발신자가 같은 프로그램 사용
- 문자열처럼 범용적으로 읽을 수 있어야함
- 타입 변환을 이용해 String 반환할 경우, 객체내용 포함 X
📌 JSON 기본 규칙
Aa | 자바스크립트 객체 | JSON |
키 | 키는 따옴표 없이 사용 가능 | 반드시 " " 붙여야함 |
문자열 값 | 문자열 값을 어떤 형태의 따옴표 다 가능 | 반드시 " " 감싸야함 |
※ JSON의 키 & 값 사이에 공백이 있어서는 안됨 | ||
※ JSON Reference |
📌 잘못된 예시 (Json 형식과 다른형태로 Java를 사용하지 않는 프로그램에서 정확한 데이터 파악 불가능)
⭐ 위의 문제를 해결하기 위한 방법은 JSON 형태로의 변환 & JSON을 객체의 형태로 변환 등이 있음
📌 발신 예시 (jackson lib에서 제공하는 ObjectMapper 클래스 & writeValue() 를 사용하여 JSON 변환)
📌 수신 예시 (직렬화된 JSON에 readVaule()메소드 적용하여 다시 객체의 형태로 반환)
⭐ 재귀를 이용한 stingify() 구현
📌 JSON.stringify(value, replacer, space)
value(필수): JSON 문자열로 변환할 값이다.(배열, 객체, 또는 숫자, 문자 등이 될 수 있다.)
replacer(선택): 함수 또는 배열이 될 수 있다. 이 값이 null 이거나 제공되지 않으면, 객체의 모든 속성들이 JSON 문자열 결과에 포함된다.
📌 타입에 따른 stringify() 변환 & 동작방식
Boolean = stringify(true) -> "true"
String = stringify("abc") -> "abc"
Null = stringify(null) -> "null"
📌 Hashmap
HashMap<Object, Object> map = new HashMap<>();
map.put("null", 2);
map.put("true", "false");
stringify(map);
"{"null":2,"true":"false"}" // "{"key":"value","key2":"value2"}" 형태로 반환
📌 List
ArrayList<Board> list = new ArrayList<Board>();
list.add(new Board("제목1", "내용1"));
list.add(new Board("제목2", "내용2"));
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(list);
System.out.println(jsonStr);
실행 결과 : [{"title":"제목1","content":"내용1"},{"title":"제목2","content":"내용2"}]
'Data Architect > Data Structure' 카테고리의 다른 글
자료구조의 특징 (0) | 2023.02.05 |
---|---|
Time Complexity & Greedy & Brute Force (0) | 2022.09.27 |
DFS & BFS (2) | 2022.09.26 |
Tree & Graph (2) | 2022.09.23 |
Recursion (0) | 2022.09.20 |