Go에서 동적 JSON 키를 구조체 필드로 역마샬링
동적 JSON 키는 정적 필드 이름이 있는 구조체로 역마샬링할 때 문제가 될 수 있습니다. 다음 JSON 구성 파일을 고려하세요.
{ "things" :{ "123abc" :{ "key1": "anything", "key2" : "more" }, "456xyz" :{ "key1": "anything2", "key2" : "more2" }, "blah" :{ "key1": "anything3", "key2" : "more3" } } }
Go 구조체에서 이 JSON을 표현하려면 정적 필드 이름 대신 맵을 사용할 수 있습니다.
type X struct { Things map[string]Thing } type Thing struct { Key1 string Key2 string }
그런 다음 JSON을 역정렬화합니다. json.Unmarshal 함수 사용:
var x X if err := json.Unmarshal(data, &x); err != nil { // handle error }
이 접근 방식을 사용하면 동적 키가 맵의 키가 되어 필요에 따라 값에 액세스할 수 있습니다.
그러나 키가 Thing 구조체의 멤버여야 하며, 언마샬링 후 키를 추가하는 루프를 작성할 수 있습니다.
type Thing struct { Name string `json:"-"` // add the field Key1 string Key2 string } ... // Fix the name field after unmarshal for k, t := range x.Things { t.Name = k x.Things[k] = t }
이 방법을 사용하면 키를 필드로 사용하고 동적 값을 모두 가질 수 있습니다.
위 내용은 Go에서 동적 JSON 키를 구조체 필드로 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!