우주먼지
article thumbnail
Published 2022. 9. 21. 06:46
JSON_Recursive Data Architect/Data Structure
⭐ JSON
  • 데이터 교환을 위해 만들어진 객체 포맷

 

📌 전송 가능 조건
  • 수신/발신자가 같은 프로그램 사용
  • 문자열처럼 범용적으로 읽을 수 있어야함
  • 타입 변환을 이용해 String 반환할 경우, 객체내용 포함 X

 

📌 JSON 기본 규칙
Aa 자바스크립트 객체 JSON
키는 따옴표 없이 사용 가능 반드시 " " 붙여야함
문자열 값 문자열 값을 어떤 형태의 따옴표 다 가능 반드시 " " 감싸야함
※ JSON의 키 & 값 사이에 공백이 있어서는 안됨
JSON Reference

 

 

📌 잘못된 예시 (Json 형식과 다른형태로 Java를 사용하지 않는 프로그램에서 정확한 데이터 파악 불가능)

위의 코드에 message.toString을 호출하면 하단 주석처리된 것과 같은 결과 리턴

 

⭐ 위의 문제를 해결하기 위한 방법은 JSON 형태로의 변환 & JSON을 객체의 형태로 변환 등이 있음

 

📌 발신 예시 (jackson lib에서 제공하는 ObjectMapper 클래스 & writeValue() 를 사용하여 JSON 변환)

writeValueAsString = 직렬화과정

 

📌 수신 예시 (직렬화된 JSON에 readVaule()메소드 적용하여 다시 객체의 형태로 반환)

readValue() 를 이용한 역직렬화


⭐ 재귀를 이용한 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
profile

우주먼지

@o귤o

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그