> 백엔드 개발 > Golang > Go에서 JSON을 언마샬링할 때 빈 값과 누락된 값을 어떻게 구별할 수 있나요?

Go에서 JSON을 언마샬링할 때 빈 값과 누락된 값을 어떻게 구별할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-12-04 09:40:15
원래의
239명이 탐색했습니다.

How Can I Differentiate Between Empty and Missing Values When Unmarshaling JSON in Go?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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