라벤더
142
2020-10-28 16:48:04 작성 2020-10-28 17:04:32 수정됨
3
123

JSON 데이터 생성 관련 질문드립니다.


현재 개발하는 구조는

DB에서 조회된 데이터를 각각의 vo 에 담고 최종적으로 aaResVo에 까지 set 한다음에

return new ResponseEntity<aaResVo>(res); 형태로 controller 에서 내보내는 형태입니다.

postman 에서 찍어보면 json 형태로 찍히고요.


질문은... 아래와 같은 형태로 JSON 데이터를 내보내야합니다.

aaResVo / aaVo / bbVo 를 만들었고

bbVo안에는 cc dd ee 에 대한 변수들이 있습니다..

다른 변수들은 필수 지만 ee는 필수가 아니라

ee 에 대한 데이터가 없을 경우 아래의 bb1 과 같이 아예 안나와야 하지만

"ee" : null 로 표기가 되네요.

null일 경우 안나오게 하려면 어떻게 할 수 있을까요?

(cc dd 만 갖고 있는 bbvo1와 / cc dd ee를 다갖고 있는 bbvo2  2개를 만들까 생각했었는데...

이 두개의 bbVo를 둘다 aaVo에 담을 방법이 생각이 안나더라고요...ㅜㅜ)


{

"aa":[

{

"bb": {

"cc": "~~~~",

"dd": "~~~~"

}

},

{

"bb": {

"cc": "~~~~",

"dd": "~~~~",

"ee": [

                                             {

"ff": "~~"

"gg": "~~"

                                            }

]

}

},

{

"bb": {

"cc": "~~~~",

"dd": "~~~~",

"ee": [

                                              {

"ff": "~~"

"gg": "~~"

                                              }

]

}

}

]

 

}

0
  • 답변 3

  • CyanGlint
    785
    2020-10-28 18:01:43

    nullable 변수를 굳이 감추시려는 이유가 뭔가요?

    제가 API를 호출하는 입장이라면 nullable 변수에 null이 들어있기를 기대하지

    라인자체가 빠지면 오히려 혼란스러울 것 같네요.


    API측에서 VO를 분리해야되나? 라는 고민을 하시는 것과 마찬가지로

    호출측에서도 변수가 있다 없다 하면 혼란스럽습니다.

    null값인 변수에 대한 일반적인 기대값은"content" : null 또는 "content" : [] 라고 봅니다.


    https://stackoverflow.com/questions/21120999/representing-null-in-json

    비슷한 주제이니 한 번 읽어보시면 좋을 것 같네요.

  • 라벤더
    142
    2020-10-29 15:23:28

    //CyanGlint

    고객사에서 내려준 포맷이 그렇습니다...


    optional 형태라 데이터가 없다면 아예 포함 시키지 않고 내보내줘야 합니다...

  • 라벤더
    142
    2020-10-29 18:05:43

    자답... 해결 했습니다.

    VO class 상단에

    @JsonInclude(Include.NON_NULL) 

    추가하니 null 필드는 제외되서 출력됩니다.

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