java Map 가공 관련 질문 입니다.
조회수 701회
javascript 를 하다가 잠깐 java 공부를 하고 있는데 Map 관련 질문 드립니다.
서버로 부터 object list 를 받는데 object 값 중 원하는 키에 해당하는 object 를 뽑아내고 싶습니다.
예시로는 a, b, c 값중 a, c 를 뽑아내는 결과를 얻고 싶습니다.
서버로 부터 받은 데이터
"data": [
{
"a": "a-1",
"b": "b-1",
"c": "c-1"
},
{
"a": "a-2",
"b": "b-2",
"c": "c-2"
},
{
"a": "a-3",
"b": "b-3",
"c": "c-3"
}
]
추출하고자 하는 데이터
"data": [
{
"a": "a-1",
"c": "c-1"
},
{
"a": "a-2",
"c": "c-2"
},
{
"a": "a-3",
"c": "c-3"
}
]
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
자바는 기본라이브러리에서 json 지원을 안합니다. 즉 서드파티 라이브러리를 받아야 합니다.
jshell 과 jackson 을 사용하여 예제를 작성하겠습니다. 여기서 jshell 은 maven 연동이 가능한 버전( https://github.com/kawasima/try-artifact )을 사용했습니다.
json 은 https://api.myjson.com/bins/xs4l6 이곳에 저장했습니다.
아래 예제를 직접 해보시기 바랍니다.
-> /resolv com.fasterxml.jackson.core:jackson-databind:jar:2.9.7 -> import java.net.* -> import com.fasterxml.jackson.databind.* -> import com.fasterxml.jackson.databind.node.* -> ObjectMapper mapper = new ObjectMapper() -> JsonNode jsonNode = mapper.readTree(new URL("https://api.myjson.com/bins/xs4l6")) -> jsonNode | Variable jsonNode of type JsonNode has value {"data":[{"a":"a-1","b":"b-1","c":"c-1"},{"a":"a-2","b":"b-2","c":"c-2"},{"a":"a-3","b":"b-3","c":"c-3"}]} -> for(JsonNode node : jsonNode.get("data")) { >> ((ObjectNode)node).remove("c"); >> } -> String result = mapper.writeValueAsString(jsonNode) | Added variable result of type String with initial value "{\"data\":[{\"a\":\"a-1\",\"b\":\"b-1\"},{\"a\":\"a-2\",\"b\":\"b-2\"},{\"a\":\"a-3\",\"b\":\"b-3\"}]}" -> System.out.println(result) {"data":[{"a":"a-1","b":"b-1"},{"a":"a-2","b":"b-2"},{"a":"a-3","b":"b-3"}]}
댓글 입력