>  기사  >  백엔드 개발  >  Go에서 `json.Unmarshal`이 언제 오류를 발생시키나요?

Go에서 `json.Unmarshal`이 언제 오류를 발생시키나요?

Patricia Arquette
Patricia Arquette원래의
2024-11-19 12:47:02483검색

When Does `json.Unmarshal` Throw an Error in Go?

Go에서 json.Unmarshal은 언제 오류를 반환합니까?

Go에서 json.Unmarshal 함수는 JSON 문자열을 구조체로 구문 분석합니다. , 그러나 항상 오류를 반환하는 것은 아닙니다. 그러나 특정 상황에서는 오류를 반환합니다.

오류가 반환되지 않는 경우

JSON 디코더는 일반적으로 소스의 값이 '오류'가 아닐 때 오류를 보고하지 않습니다. 대상의 항목과 일치하지 않습니다. 예를 들어, 소스에 "status"라는 필드가 포함되어 있지만 대상에는 없으면 오류가 발생하지 않습니다.

Error Cases

json.Unmarshal은 반환합니다. 다음 시나리오의 오류:

  • 구문 오류: JSON이 따옴표나 구두점이 누락되는 등 문자열 형식이 잘못되었습니다.
  • 대상 유형으로 표현할 수 없는 JSON 값: JSON 값을 대상 구조체의 해당 필드 유형으로 변환할 수 없는 경우. 예를 들어 부울 값을 문자열 필드로 역마샬링하려고 하면

오류 사례의 예

type A struct {
    Name string `json:"name"`
}

var jsonString string = `{ "status": "false" }'`
var a A
error := json.Unmarshal([]byte(jsonString), &a)

fmt.Println(err) // prints cannot unmarshal bool into Go value of type string

이 예에서는 오류가 발생합니다. 소스 JSON에는 부울 유형의 "상태" 필드가 있지만 대상 구조체에는 해당 부울이 없기 때문입니다. 필드입니다.

위 내용은 Go에서 `json.Unmarshal`이 언제 오류를 발생시키나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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