>백엔드 개발 >Golang >IntTo Float64의 JSON 변환 미스터리

IntTo Float64의 JSON 변환 미스터리

WBOY
WBOY원래의
2024-09-03 13:20:191164검색

The Mystery Of JSON Conversion Of IntTo Float64

JSON을 사용한 작업은 간단하고 명확하게 들릴 수 있습니다. 구조체가 있으면 이를 일반 통합 언어인 JSON으로 변경할 수 있으며 다시 구조체로 돌아갈 수 있습니다. 간단하죠? ?

그렇습니다. 하지만 Marshal/Unmarshal 함수에서 이상한 동작이 발생하기 전까지는 그렇습니다.

문제 ?

JWT 토큰에서 인코딩된 페이로드를 읽으려고 할 때 모든 것이 시작되었습니다. 아래는 문제를 보여주는 예입니다

으아아아

구조체를 마샬링하고 역마샬링하면 동일한 값이 반환될 것으로 예상됩니다!

안타깝게도 이런 일은 발생하지 않았습니다. 위의 코드는

으아아아

그 출력을 본 후 나는 ? 문제는 유형 변환에 있을 수 있으므로 이 인터페이스에는 어떤 유형이 있는지 확인하러 갔습니다

으아아아 으아아아

보시다시피 JSON은 int64를 float64로 구문 분석하여 데이터를 읽을 때 문제를 일으킵니다.

이 문제를 해결하는 방법에는 실제로 두 가지가 있습니다

? 솔루션 01(어려운 방법)

float64의 유형 어설션을 사용하세요. []interface{}는 []float64에 바로 매핑될 수 없으므로 각 요소를 반복하고 변환해야 합니다.

으아아아 으아아아

? 솔루션 02 (쉬운 방법)

구조체로 다시 구문 분석

으아아아

물론 솔루션 01을 사용해야 하는 이유는 솔루션 02가 더 좋지 않을까요?

글쎄, 상황에 따라 다르지만 항상 구조체에서 단일 속성을 읽기 위해 구조체를 생성하고 싶지는 않으므로 정답은 -- 상황에 따라 다릅니다!

오늘 기사는 여기까지인 것 같습니다. 새로운 것을 배웠으면 좋겠습니다, 고퍼 여러분?.

위 내용은 IntTo Float64의 JSON 변환 미스터리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.