동적 키를 사용하여 중첩 JSON 역마샬링
복잡한 JSON 구조에서 동적으로 변경되는 키가 있는 중첩 객체를 만나면 역마샬링 중에 문제가 발생할 수 있습니다. 다음 JSON 데이터를 고려하십시오.
{ "message": { "Server1.example.com": [ { "application": "Apache", "host": { "name": "/^Server-[13456]/" }, "owner": "User1", "project": "Web", "subowner": "User2" } ], "Server2.example.com": [ { "application": "Mysql", "host": { "name": "/^Server[23456]/" }, "owner": "User2", "project": "DB", "subowner": "User3" } ] }, "response_ms": 659, "success": true }
해결책:
이러한 JSON을 효과적으로 역마샬링하려면 동적 키가 있는 중첩 객체에 대해 map[string]ServerStruct를 사용하는 것이 좋습니다. . 이 접근 방식을 사용하면 이름을 알 수 없는 여러 서버를 포함할 수 있습니다.
다음은 업데이트된 구조체의 예입니다.
type YourStruct struct { Success bool ResponseMS int Servers map[string]*ServerStruct } type ServerStruct struct { Application string Owner string [...] }
JSON 태그를 추가하면 디코더에 특정 JSON을 매핑하도록 지시할 수 있습니다. 해당 구조체 필드에 필드를 추가합니다. 업데이트된 태그는 다음과 같습니다.
type YourStruct struct { Success `json:"success"` ResponseMS `json:"response_ms"` Servers `json:"-"` } type ServerStruct struct { Application string `json:"application"` Owner string `json:"owner"` [...] }
"Servers" 필드의 json:"-" 태그는 디코더가 JSON 필드를 "ServerStruct" 필드에 직접 매핑하는 것을 건너뛰도록 합니다. 대신 필드를 map[string]ServerStruct에 매핑합니다.
이 접근 방식은 동적 키를 사용하여 중첩된 JSON 개체를 역마샬링하는 유연한 솔루션을 제공하므로 각 서버 개체 내의 데이터에 쉽게 액세스할 수 있습니다.
위 내용은 Go를 사용하여 동적 키로 중첩된 JSON을 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!