JSON을 사용한 작업은 간단하고 명확하게 들릴 수 있습니다. 구조체가 있으면 이를 일반 통합 언어인 JSON으로 변경할 수 있으며 다시 구조체로 돌아갈 수 있습니다. 간단하죠? ?
그렇습니다. 하지만 Marshal/Unmarshal 함수에서 이상한 동작이 발생하기 전까지는 그렇습니다.
JWT 토큰에서 인코딩된 페이로드를 읽으려고 할 때 모든 것이 시작되었습니다. 아래는 문제를 보여주는 예입니다
구조체를 마샬링하고 역마샬링하면 동일한 값이 반환될 것으로 예상됩니다!
안타깝게도 이런 일은 발생하지 않았습니다. 위의 코드는
그 출력을 본 후 나는 ? 문제는 유형 변환에 있을 수 있으므로 이 인터페이스에는 어떤 유형이 있는지 확인하러 갔습니다
보시다시피 JSON은 int64를 float64로 구문 분석하여 데이터를 읽을 때 문제를 일으킵니다.
이 문제를 해결하는 방법에는 실제로 두 가지가 있습니다
float64의 유형 어설션을 사용하세요. []interface{}는 []float64에 바로 매핑될 수 없으므로 각 요소를 반복하고 변환해야 합니다.
구조체로 다시 구문 분석
물론 솔루션 01을 사용해야 하는 이유는 솔루션 02가 더 좋지 않을까요?
글쎄, 상황에 따라 다르지만 항상 구조체에서 단일 속성을 읽기 위해 구조체를 생성하고 싶지는 않으므로 정답은 -- 상황에 따라 다릅니다!
오늘 기사는 여기까지인 것 같습니다. 새로운 것을 배웠으면 좋겠습니다, 고퍼 여러분?.
위 내용은 IntTo Float64의 JSON 변환 미스터리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!