Go에서 동적 키를 구조체 필드로 역마샬링
미리 결정된 구조를 따르지 않는 JSON 데이터로 작업할 때 역마샬링이 더 많아집니다. 도전적이다. 이 경우 "things"라는 개체 내에 동적 키가 포함된 JSON 구성 파일이 있습니다.
이 문제를 해결하기 위한 한 가지 해결책은 구조체 내의 맵을 사용하여 동적 키를 캡처하는 것입니다. 예는 다음과 같습니다.
type X struct { Things map[string]Thing } type Thing struct { Key1 string Key2 string }
각 키에 대해 특정 구조체 필드를 정의하는 대신 "Things" 필드는 키-값 쌍을 저장하는 맵입니다. 여기서 키는 동적 키입니다.
이 접근 방식을 사용하여 JSON 데이터를 역마샬링하려면 다음과 같이 하면 됩니다.
var x X if err := json.Unmarshal(data, &x); err != nil { // handle error }
이렇게 하면 JSON이 "X" 구조체로 역마샬링되고 동적 키가 내부의 적절한 구조체 인스턴스에 매핑됩니다. "사물" 맵.
그러나 키 값을 맵 키의 일부가 아닌 구조체의 필드로 사용하려는 경우 다음 접근 방식을 사용할 수 있습니다.
type Thing struct { Name string `json:"-"` // <-- add this field Key1 string Key2 string } ... // Update the name field after unmarshalling for k, t := range x.Things { t.Name = k x.Things[k] = t }
정렬화 해제 중에 무시할 수 있도록 "이름" 필드에 "-`json" 태그를 추가하는 작업이 포함됩니다. 언마샬링 후 루프를 사용하여 맵에 있는 각 구조체 인스턴스의 "이름" 필드에 동적 키를 할당합니다.
위 내용은 Go에서 동적 키를 사용하여 JSON을 구조체 필드로 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!