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"}]}
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)