728x90
반응형
💡 학습 목표
- Java에서 제공하는 데이터 타입을 JSON으로 변경하는 기능을 구현
- Json이 무엇인지 안다
- ‘전송가능한 조건’이 무엇인지 안다
- 자바스크립트 객체와 JSON의 차이를 안다 </aside>
JSON이란
JavaScript Object Notation
데이터 교환을 위해 만들어진 객체 형태 포맷
객체 내용이 메시지라면, 어떻게 전송할 수 있을까?
전송가능한 조건?(transferable condition)
- 같은 프로그램을 발/수신자가 사용
- 범용적으로 읽을 수 있는 형태(ex;문자열)
ap<String, String> message = new HashMap<>(){{
put("sender", "김코딩");
put("receiver", "박해커");
put("message", "밥먹을래?");
put("createdAt", "2021-01-12,10:10:10");
}};
Hashmap message에 넣은 위와 같은 데이터는 형변환한다고 객체 내용을 포함하는 게 아님
ex: message.toString() 한다고 해서 java외 다른 프로그램에서도 읽을 수 있게 되는 게 아님
→객체를 JSON형태로 변환 or JSON을 객체 형태로 변환해야 함
우선 JSON형태로 변경해보자
ObjectMapper 클래스로 JSON만들기
ObjectMapper mapper = new ObjectMapper();
String json = mapper. writeValueAsSting(message);
sout(json);
/*결과
{"createdAt":"2021-01-12,10:10:10","receiver":"박해커","sender":"김코딩","message":"밥먹을래?"}
*/
직렬화(serialize)
writeValueAsSting(message); = 문자열의 JSON형태로 만들기
JSON은 문자열로 변환된 것
수신자는 어떻게 다시 객체의 형태로 만들까?
역직렬화(deserialization)
ObjectMapper mapper new ObjectMapper();
String json = "{\\"createdAt\\":\\"2021-01-12,10:10:10\\",\\"receiver\\":\\"박해커\\",\\"sender\\":\\"김코딩\\",\\"message\\":\\"밥먹을래?\\"}";
Map<String, String> deserializedData = mapper.readValue(json, Map.class);
sout(deserializedData);
/*
객체 형태의 결과 반환
{createdAt=2021-01-12,10:10:10, receiver=박해커, sender=김코딩, message=밥먹을래?}
*/
JSON의 기본 규칙
자바스크립트 객체와 다른 규칙
JSON 공식 문서
key String value
자바스크립트 객체 | 따옴표 없이 | 따옴표 상관X |
JSON | 반드시 큰따옴표 | 반드시 큰따옴표 |
key:✔️value, ✔️key:value 띄어쓰기 절대안됨
728x90
반응형
'Web > Java' 카테고리의 다른 글
Java Stream , Lambda만 보면 얼어버리는 사람의 예제코드 뿌시기 프로젝트 (0) | 2022.09.13 |
---|---|
⭐추상화(1) 상속vs추상화, abstract제어자, 추상클래스, 추상메서드, final 키워드 (0) | 2022.07.18 |