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