WEB ( Back, Front)/Java
JsonNode to Object, Object to JsonNode 자유자제로 사용하기
프리랜서가 들려주는 IT세계
2022. 2. 18. 14:41
반응형
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 를 꼭 등록하고 사용해야 한다.
반응형