본문 바로가기

Programming/Tip&Informaion

[실수노트] json에 대해서.. (number 타입)

예전에 json 파싱을 하다가 python의 경우 스트링 처리 시에 '과 " 구별 없이 사용이 가능해서 문제가 발생했던 적이 있다.

(당연히 json은 "만 가능한데, 별 생각없이 python으로 string 변환을 해서..)

 

근데 오늘 또 문제가 발생했다.

내 코드는 redis에서 가져온 값을 json으로 변환하는 것이었는데 평소엔 잘 작동하다가 테스트를 위해 다른 값들을 포함시키니 문제가 발생했다.

golang에선 json.Unmashal 함수를 사용해서 interface 형식의 데이터를 json으로 변환하는데 이 부분에서 문제가 발생했다.

 

에러 내용은

invalid character '1' after array element

 

변환하려는 값은 {"ids": [0123, 1234]} 형태였다.

아무리 봐도 특별히 문제가 없는데 왜 이런가 하고 열심히 알아본 결과는 json 에서 숫자는 0으로 시작하면 안 된다고 한다...

(그럼 에러 내용을 0 뒤에 다른 값이 나오면 안 된다고 알려주지...)

이유를 찾아보니 자바스크립트에선 0으로 시작하는 숫자는 8진수로 취급하기 때문이다.

그리고 json에선 공식적으론 8진수를 취급하지 않는 거라 파서마다 가능할 수도 있다고 한다.

https://stackoverflow.com/questions/27361565/why-is-json-invalid-if-an-integer-begins-with-a-leading-zero