>  기사  >  백엔드 개발  >  정수가 아닌 문자열일 때 JSON 필드를 역마샬링하는 방법은 무엇입니까?

정수가 아닌 문자열일 때 JSON 필드를 역마샬링하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-12 17:33:02853검색

How to Unmarshal JSON Fields When They Are Strings Instead of Integers?

JSON 필드가 정수가 아닌 문자열인 경우 비마샬 오류를 처리하는 방법

JSON 데이터를 처리할 때 JSON 필드가 문자열로 표시되는 상황이 발생할 수 있습니다. 정수 대신 JSON Unmarshal이 실패하게 됩니다. 이 문제는 int64 값을 잘 처리하지 못하는 JavaScript가 JSON 데이터를 인코딩할 때 발생합니다.

다음 구조체를 고려하세요.

type tySurvey struct {
    Id     int64       `json:"id,omitempty"`
    Name   string      `json:"name,omitempty"`
}

표준 Marshal을 사용하여 이 구조체를 JSON으로 마샬링할 때 함수를 작성한 다음 Go 핸들러에 다시 게시하기 전에 jQuery로 name 필드를 수정하면 id 필드가 문자열로 인코딩될 수 있습니다. 이로 인해 JSON을 tySurvey 구조체로 역마샬링하려고 할 때 오류가 발생합니다.

json: cannot unmarshal string into Go value of type int64

이 문제를 해결하려면 JSON에 ,string을 추가하여 문자열에서 id 필드를 역마샬링할 수 있도록 지정할 수 있습니다. 태그:

type tySurvey struct {
    Id   int64       `json:"id,string,omitempty"` // Add ",string" to handle string values
    Name   string      `json:"name,omitempty"`
}

이를 통해 JSON Unmarshal은 id 필드의 문자열 표현을 성공적으로 변환할 수 있습니다. 정수.

빈 문자열은 정수로 역마샬링될 수 없으므로 ,string이 있는 필드에 생략을 설정하는 것은 권장되지 않습니다.

위 내용은 정수가 아닌 문자열일 때 JSON 필드를 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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