원문구조
"data" : {
"output" : {
"able": {
"label" : "활성여부",
"default" : "",
"type" : "String",
"value" : "N",
"desc" : "임시",
},
"state": {
"label" : "상태",
"default" : "",
"type" : "String",
"value" : "2",
"desc" : "",
},
},
"status" : {
"name": "ok",
"flag": 2,
"isStudent": false,
}
}
간소화 구조
{
"output": {
"able": "N",
"state": "2",
"name": "ok",
"flag": 2,
"isStudent": false
}
}
ObjectMapper mapper = new ObjectMapper();
String json = """
{
"data" : {
"output": {
"able": {
"label": "활성여부",
"default": "",
"type": "String",
"value": "N",
"desc": "임시"
},
"state": {
"label": "상태",
"default": "",
"type": "String",
"value": "2",
"desc": ""
}
},
"status": {
"name": "ok",
"flag": 2,
"isStudent": false
}
}
}
""";
JsonNode root = mapper.readTree(json);
ObjectNode resultOutput = mapper.createObjectNode();
// 1. output.value 추출
JsonNode dataNode = root.get("output");
JsonNode outputNode = dataNode.get("output");
Iterator<Map.Entry<String, JsonNode>> fields = outputNode.fields();
while (fields.hasNext()) {
Map.Entry<String, JsonNode> entry = fields.next();
resultOutput.set(entry.getKey(), entry.getValue().get("value"));
}
// 2. status 그대로 합치기
JsonNode statusNode = root.get("status");
statusNode.fields().forEachRemaining(e ->
resultOutput.set(e.getKey(), e.getValue())
);
ObjectNode result = mapper.createObjectNode();
result.set("output", resultOutput);
System.out.println(
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(result)
);'java' 카테고리의 다른 글
| RSA 암호화 (0) | 2026.01.21 |
|---|---|
| Java > C# UDP 통신 / 리틀엔디안(Little Endian)방식 (2) | 2023.08.21 |
| ByteBuffer 객체 생성 및 크기 용량 할당 (1) | 2023.08.11 |
| C# > Java UDP Server 인코딩 (0) | 2023.07.17 |
| 인텔리제이 + 스프링 프로젝트 생성(IntelliJ + Maven) (1) | 2022.08.17 |