본문 바로가기
WEB ( Back, Front)/Java

JsonNode to Object, Object to JsonNode 자유자제로 사용하기

by 프리랜서가 들려주는 IT세계 2022. 2. 18.
반응형

DB column에 json형태로 저장한 값을 가져와

jsonNode로 담아 원하는 Key의 데이터를 가져올 때

빠르게 사용이 가능하다.

 

JsonObject로 시도를 해보았지만,

JsonNode가 좀 더 편리한 면이 많았다.

 

Dept에 따른 구현을 간결하게 하기 위해

사용하기에 적합한 module이다.

 


1. JsonNode -> Object

@Autowired
ObjectMapper objMapper;

private String parseStringResult(String conditionJson) thorws JsonMappingException, JsonProcessingException, net.minidev.json.parser.ParseException {
	StringBuilder results = new StringBuilder();
    JsonNode arrayNode = objMapper.readTree(conditionJson); //DB에 저장된 Json (String값)을 JsonNode로 변환
	
    List<Object> objList = objMapper.treeToValue(arrayNode.path("key값"), List.class); // 가지고 오고 싶은 Key 값의 데이터를 Type에 맞게 옮기기!
    ...
    
    String result = new String(results);
    return result;
}

 

2. Object -> JsonNode

@Autowired
ObjectMapper objMapper;

private String parseStringResult(String conditionJson) thorws JsonMappingException, JsonProcessingException, net.minidev.json.parser.ParseException {
	StringBuilder results = new StringBuilder();
    JsonNode arrayNode = objMapper.readTree(conditionJson); //DB에 저장된 Json (String값)을 JsonNode로 변환
	
    List<Object> objList = objMapper.treeToValue(arrayNode.path("key값"), List.class); // 가지고 오고 싶은 Key 값의 데이터를 Type에 맞게 옮기기!
    ...
    
    for (Object obj : objList) {
    	if(idx == 0) { 
        	Map<String, Object> map = objMapper.convertValue(obj, Map.class); // Object를 Map Type(key-value)으로 변환!
            ...
        } else if (idx < arrayNode.size()) { // JsonNode 변환시, Object Size 체크 가능!
        	JsonNode jnd = objMapper.convertValue(obj, JsonNode.class); // Object -> JsonNode로 변환!
            ...
        }
        ...
    }
    ...
    
    String result = new String(results);
    return result;
}

 

 

** Object --> Another Type 으로 변환시킬 때,

ObjectMapper 를 꼭 등록하고 사용해야 한다.

반응형

'WEB ( Back, Front) > Java' 카테고리의 다른 글

JAVA 프로그래밍: 시작부터 실전까지의 스토리 chapter 1  (0) 2023.05.17
Map vs List 차이  (0) 2020.09.15
파일 업로드 주의 사항  (0) 2020.08.06
Java #1  (0) 2019.12.27

댓글