[Vue.js] JSON 파싱 시 같은 포맷으로 2건 응답 받는데 하나만 정상적으로 받는 경우

조회수 515회

서버로부터 응답값을 json 형태로 받아와 처리 중입니다만 분명히 2건의 json 데이터가 형식도 동일한데 한개만 제대로 받고 하나는 아래와 같이 에러가 발생되면서 파싱에러가 납니다...

TypeError: Cannot read properties of undefined (reading 'result')

차이점이라면 하나는 리스트배열 안에 값이 있고 다른 하나는 없이 빈값으로 들어오는게 차이점입니다...

도대체 어디가 다르고 문제인지 모르겠는데 참고할만한 부분이 있는지 답변 좀 부탁드리겠습니다...

API 요청하는 소스코드는 맨 아래에 있습니다..

[ json 데이터 1 ] { "result": { "message": "ok", "status": "000" }, "data": { "list": [ { "dong": "0101", "ho": "0102", "location_id": "1", "location_name": "거실", "comm_status": "y", "ble_status": "y" }, { "dong": "0101", "ho": "0102", "location_id": "2", "location_name": "침실1", "comm_status": "y", "ble_status": "y" }, { "dong": "0101", "ho": "0102", "location_id": "3", "location_name": "침실2", "comm_status": "y", "ble_status": "n" } ] }, "header": { "cmd": 32, "token": "rEJ1wd5gY4s/8AORGCb5naGJNSBkb6ltRL5nhhmFXasAm5Xw3hpjcK6bg4+qssERdwZkKHz14LgOp9effctelCIhTLozkQNe4jr2KOP1L7CeulCvGwV6CCP/Pt/mr6udYLIEsvhrCkjP9ABqEMvb3XtnyzxnwEpGs9PAAgUZCKcn6uiJn6ug4eTXHebyjH1P" } }

[ json 데이터 2 ] { "result": { "message": "ok", "status": "000" }, "data": { "list": [] }, "header": { "cmd": 32, "token": "rEJ1wd5gY4s/8AORGCb5naGJNSBkb6ltRL5nhhmFXasAm5Xw3hpjcK6bg4+qssERdwZkKHz14LgOp9effctelCIhTLozkQNe4jr2KOP1L7CeulCvGwV6CCP/Pt/mr6udYLIEsvhrCkjP9ABqEMvb3XtnyzxnwEpGs9PAAgUZCKcn6uiJn6ug4eTXHebyjH1P" } }

this.$store.dispatch('postDeviceStatus', send_data).then((resp) => {

                    if (resp.data.result.status == '000' && resp.data.header.cmd == '32') {

                  _.forEach(_.orderBy(resp.data.data.list, ['dong', 'ho'], ['asc', 'asc']), function (v, i) {

                    var json_switch = {
                      'switchDong': v.dong,
                      'switchHo': v.ho,
                      'switchLocationId': v.location_id,
                      'switchLocationName': v.location_name,
                      'switchCommStatus': v.comm_status,
                      'switchBleStatus': v.ble_status
                    }
                    arraySwitchInfo.push(json_switch)

                  })

                } else {
                  console.log('TEST ====>> ', "SWITCH null");
                }

              }).catch((e) => {
                // clearInterval(this.polling)
                console.log('TEST ====>> ', "SWITCH API CALL ERROR..." + e)
              })

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

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

(ಠ_ಠ)
(ಠ‿ಠ)