Go 언마샬링에서 공백 및 지정되지 않은 값 식별
JSON 데이터를 Go 구조체로 언마샬링할 때 비어 있는 것과 누락된 것을 구별하기 어려울 수 있습니다. 가치. 이는 프로그램에서 이러한 값을 다르게 처리하려는 경우 특히 중요합니다.
다음 예를 고려하십시오.
import ( "encoding/json" "fmt" ) type Category struct { Name string Description string } var categories []Category jsonBlob := []byte(`[ {"Name": "A", "Description": "Monotremata"}, {"Name": "B"}, {"Name": "C", "Description": ""} ]`) err := json.Unmarshal(jsonBlob, &categories) if err != nil { fmt.Println("error:", err) } fmt.Printf("%+v", categories)
이 예에서 범주 B의 설명 필드는 비어 있지만 카테고리 C의 설명 필드가 JSON에 지정되어 있지 않습니다. 출력은 다음과 같습니다.
[{Name:A Description:Monotremata} {Name:B Description:} {Name:C Description:}]
보시다시피 이 두 경우를 구별하는 것은 불가능합니다.
해결책
할 수 있습니다. 필드 유형을 포인터로 변경하여 빈 값과 누락된 값을 구별합니다. 값이 빈 문자열 값과 함께 JSON에 있는 경우 빈 문자열을 가리키는 포인터로 설정됩니다. JSON에 없으면 nil로 남습니다.
type Category struct { Name string Description *string }
이 수정을 사용하면 출력은 다음과 같습니다.
[{Name:A Description:0x1050c150} {Name:B Description:<nil>} {Name:C Description:0x1050c158}]
이제 nil 값을 사용하여 식별할 수 있습니다. 누락된 필드를 확인하고 그에 따라 처리하세요.
위 내용은 Go에서 JSON을 언마샬링할 때 빈 값과 누락된 값을 어떻게 구별할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!