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

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

Susan Sarandon
Susan Sarandon원래의
2024-12-14 19:55:12447검색

How Can I Differentiate Between Empty and Missing Fields When Unmarshalling JSON in Go?

Go Unmarshaling에서 Void 값과 지정되지 않은 필드 구별

Golang에서 JSON 데이터를 Unmarshalling하는 것은 간단할 수 있지만 void 값과 지정되지 않은 필드를 구별하는 것은 가치는 도전이 될 수 있습니다. 이 문서에서는 이 문제를 다루며 둘을 구별하는 솔루션을 제공합니다.

제공된 예에는 각 범주에 이름 및 설명 필드가 있는 Category 구조체 조각이 있습니다. JSON 데이터를 이 조각으로 역마샬링할 때 범주 B와 범주 C 모두에 빈 설명 필드가 있는 시나리오가 발생합니다. 그러나 카테고리 B의 설명이 빈 문자열로 지정되었는지 아니면 단순히 JSON 데이터에 존재하지 않는지 식별할 수 있는 방법이 있는지 알고 싶습니다.

핵심은 설명 필드를 문자열:

type Category struct {
    Name        string
    Description *string
}

포인터를 사용하면 JSON 필드에 빈 문자열 값이 있는 경우 빈 문자열(*"")을 가리키는 포인터로 설정됩니다. 반대로 JSON에 필드가 없으면 포인터는 nil()로 남습니다.

업데이트된 출력은 이러한 차별화를 보여줍니다.

[{Name:A Description:0x1050c150} {Name:B Description:<nil>} {Name:C Description:0x1050c158}]

여기서 카테고리 A는 설명은 비어 있지 않고, 카테고리 B의 설명은 nil(지정되지 않은 필드를 나타냄)이며, 카테고리 C의 설명은 빈 문자열입니다. (지정된 빈 값 표시).

이 기술을 사용하면 무효 값(nil)과 지정되지 않은 필드(nil 포인터)를 구별하여 이에 따라 프로그램 동작을 조정할 수 있습니다.

위 내용은 Go에서 JSON을 언마샬링할 때 빈 필드와 누락된 필드를 어떻게 구별할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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