"Java Object" =Serialize=> "JSON", (2) "JSON" =Deserialize=> "Java Object"
JSON(JavaScriptObjectNotation) 상하차가 쉬운 언어는 Javascript
0. JSON 이란? = 데이터를 보관하는 형식
복잡한 데이터를 인터넷에서 유저들끼리 주고 받을 때 깔끔한 형식으로 데이터를 담는데 필요한 형식이 있다. 이 중에 XML, CSV, JSON이 있다.
1) XML
<데이터이름>값</데이터이름>
2) CSV
Year, Brand, Mode
1997,Ford, E350
3) JSON ~ ... YAML, BSON, SMILE 등
-> 보통 설정 파일에 많이 사용한다. ex) package.json
※ JSON 이랑 JavaScript의 일반 Object는 다르다.
var obj = { name: 'kim', age : 30}
var json = JSON.stringify(obj)
console.log(json); // {"name" : "kim", "age":30}
console.log(obj) // {name: 'kim', age : 30}
//JSON을 Object로 변환하기 위해서
var a = JSON.parse(json)
console.log(a) // {name: 'kim', age : 30}
1. 직렬화, 역직렬화
2. JsonIgnore
JSON 직렬, 역직렬화를 무시할때 사용
사용예시는 아래 참고
https://velog.io/@hth9876/JsonIgnorePropertiesignoreUnknown-true
api 개발을 할 때 응답결과 데이터를 위한 class는 하나인데 상태에 따라 항목이 달라지는 경우 null이냐 아니냐에 따라 항목을 숨기거나 보여주도록 처리할 수 있다. 아래 @JsonInclude(JsonInclude.include.NON_NULL)을 추가해 주면 null인 데이터는 json 결과에 나타나지 않는다. 사용예시(https://junho85.pe.kr/1626)
@JsonInclude(JsonInclude.Include.NON_NULL)
3. Jackson Object Mapper
- Convert "Java Object" to "JSON"
- Convert "JSON" to "Java Object"
- Convert "JSON" to "Jackson JsonNode"
- Convert "JSON Array String" to "Java List"
- Convert "JSON String" to "Java Map"
@Bean
public RedisTemplate<String, Object> redisTemplate() {
ObjectMapper objectMapper = new ObjectMapper();
//
objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
objectMapper.enable(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT);
objectMapper.registerModule(new JavaTimeModule());
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer(objectMapper));
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer(objectMapper));
return redisTemplate;
https://interconnection.tistory.com/137
https://www.logicbig.com/tutorials/misc/jackson/jackson-json-type-info-annotation.html
4.@JsonProperty, @JsonNaming
https://newwisdom.tistory.com/m/45
'Back-end > Java Language' 카테고리의 다른 글
Java Wrapper class (0) | 2023.01.29 |
---|---|
Java Optional, Stream (0) | 2023.01.29 |
Exception Handling (0) | 2023.01.01 |
super()와 super (0) | 2022.12.11 |
직렬화(Serialization) (0) | 2022.10.12 |