자바빵
93
2019-07-12 11:00:44
5
287

복잡한 VO를 핸들링하는 방법에대해 조언을 구해봅니다.




네이버 api의 결과 값으로 아래 첨부한 데이터를 받습니다.

해당 데이터를 받아서 핸들링하려고 하는데,

VO안에 VO가 들어가는 2중이나 3중으로된 VO라면 그냥 VO class를 두세개 만들어서 진행해 왔는데,

그 이상은 전부 만들자니 너무 비효율 적인거 같아 어떤식으로 문제를 접근해야할지 질문드립니다.



분명...간단하게 접근하거나 필요한 부분만 빼서 쓰는 방법이 있을법한데, 감이 잘 안옵니다 ㅠㅠ
 

 

============================================================================================

네이버 api로부터 받은 데이터 값.

 

{
    "status": {
        "code": 0,
        "name": "ok",
        "message": "done"
    },
    "results": [
        {
            "name": "roadaddr",
            "code": {
                "id": "4113510300",
                "type": "L",
                "mappingId": "02135103"
            },
            "region": {
                "area0": {
                    "name": "kr",
                    "coords": {
                        "center": {
                            "crs": "",
                            "x": 0,
                            "y": 0
                        }
                    }
                },
                "area1": {
                    "name": "경기도",
                    "coords": {
                        "center": {
                            "crs": "EPSG:4326",
                            "x": 127.550802,
                            "y": 37.436318
                        }
                    },
                    "alias": "경기"
                },
                "area2": {
                    "name": "성남시 분당구",
                    "coords": {
                        "center": {
                            "crs": "EPSG:4326",
                            "x": 127.118925,
                            "y": 37.38282
                        }
                    }
                },
                "area3": {
                    "name": "정자동",
                    "coords": {
                        "center": {
                            "crs": "EPSG:4326",
                            "x": 127.111533,
                            "y": 37.361458
                        }
                    }
                },
                "area4": {
                    "name": "",
                    "coords": {
                        "center": {
                            "crs": "",
                            "x": 0,
                            "y": 0
                        }
                    }
                }
            },
            "land": {
                "type": "",
                "number1": "6",
                "number2": "",
                "addition0": {
                    "type": "building",
                    "value": "NAVER그린팩토리"
                },
                "addition1": {
                    "type": "zipcode",
                    "value": "13561"
                },
                "addition2": {
                    "type": "roadGroupCode",
                    "value": "411353180030"
                },
                "addition3": {
                    "type": "",
                    "value": ""
                },
                "addition4": {
                    "type": "",
                    "value": ""
                },
                "name": "불정로",
                "coords": {
                    "center": {
                        "crs": "",
                        "x": 0,
                        "y": 0
                    }
                }
            }
        }
    ]
}

0
0
  • 답변 5

  • 멘탈조각
    705
    2019-07-12 11:13:10

    두세개만 만들면 되겠네요.

    뭐가문제죠?

    0
  • 자바빵
    93
    2019-07-12 11:32:41

    음.... 각각 Class파일 만들 필요없이 innerClass로 만들면 되는건가요??

    매번 VO만들땐 각각 Class파일을 만들어서 써서....ㅠㅠ

    0
  • 제타건담
    6k
    2019-07-12 13:09:10

    개인적으로는 따로 만드는걸 추천합니다..

    네이버도 바보가 아닌 이상 저렇게 설계했을땐 분명 해당 클래스가 다른 쪽에 재사용이 되기 때문에 그렇게 만들었을꺼라 생각합니다..

    물론 약간 절충을 볼 수는 있어요..일부 재사용되지 않을 부분은 Map으로 대체할 수는 있을겁니다..그러나 모든 부분을 Map으로 바꿀 경우 체계적이지 않은 구조가 되어버려서 유지보수하기 어려울수도 있습니다..

    0
  • lloydkwon
    2k
    2019-07-12 13:27:04

    html에서 일정 tag 값을 가져올 때는 jsoup

    xml에서 임의의 element 를 가져올 때는 xpath

    json에서 임의의 자료를 가져올 때는 jsonpath

    를 이용해서 가져올 수 있어요...

    전체 데이터가 필요하면 클래스를 만들어 처리하는게 좋아보이구요.

    특정한 값을 가져올 때는 위와 같은 툴을 이용할 수도 있어 보입니다.


    jsonpath는 아래 참고해 보세요.

    https://www.baeldung.com/guide-to-jayway-jsonpath

    0
  • 멘탈조각
    705
    2019-07-12 14:09:33

    데이터를 잘 읽어보세요.

    서너개의 중복되는 구조가 반복되는 형태죠. 근데 어레이는 아닌데다 길이가 고정된게 아니니 맵으로 처리하면 될거 같고요.

    같은 구조를 반복해서 작성하는거는 당연히 바보짓이고,

    InnerClass로 만들지 별도의 클래스로 만들지는 그 데이터의 재사용 여부에 따릅니다.

    자료구조론과 객체지향프로그래밍론, 소프트웨어공학론을 적절히 응용해야합니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.