> 백엔드 개발 > Golang > Go의 json.Unmarshal은 언제 오류를 반환합니까?

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

Mary-Kate Olsen
풀어 주다: 2024-11-15 12:16:02
원래의
896명이 탐색했습니다.

When Does json.Unmarshal in Go Return Errors?

Go에서 JSON 디코딩 오류

Go에서 json.Unmarshal 함수를 사용하여 JSON을 구조체로 디코딩할 때 상황을 이해하는 것이 중요합니다. 오류가 반환됩니다.

오류가 반환되지 않는 경우

일부 언어와 달리 Go의 JSON 디코더는 JSON 소스의 값이 있는 경우 오류를 보고하지 않습니다. 대상 구조체의 값과 일치하지 않습니다. 예를 들어 JSON에 구조체에 없는 필드가 포함되어 있으면 오류로 간주되지 않습니다.

오류가 반환될 때

그러나 json.Unmarshal은 다음 상황에서는 오류를 반환합니다.

  • 구문 오류: JSON의 형식이 잘못되었거나 잘못된 구문이 포함된 경우 오류가 반환됩니다. 오류 메시지는 오류 위치에 대한 세부 정보를 제공합니다.
  • 대상 유형으로 표현할 수 없는 JSON 값: JSON의 값을 구조체의 해당 유형으로 변환할 수 없는 경우, 오류가 반환됩니다. 예를 들어 JSON에 부울 값이 포함되어 있지만 구조체 필드에 문자열이 필요한 경우 json.Unmarshal은 실패합니다.

다음 코드를 고려하세요. :

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

jsonString := `{"status": false}`
var a A
err := json.Unmarshal([]byte(jsonString), &a)
로그인 후 복사

이 예에서 json.Unmarshal은 JSON에 예상되는 이름 필드가 포함되어 있지 않더라도 오류를 반환하지 않습니다. 디코더는 단순히 상태 필드를 무시하고 A 구조체의 이름 필드를 비워 둡니다.

그러나 JSON에 다음이 포함된 경우:

{"name": false}
로그인 후 복사

json.Unmarshal은 오류를 반환합니다. JSON 값을 문자열 형식으로 변환할 수 없기 때문입니다.

위 내용은 Go의 json.Unmarshal은 언제 오류를 반환합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿