목표는 알려진 문자열이 혼합된 JSON 문자열을 역마샬링하는 것입니다. 알 수 없는 키/값 쌍을 Go 구조체로 변환합니다. 알려진 필드는 특정 구조체 필드로 마샬링 해제되어야 하며, 알 수 없는 필드는 구조체 내의 키/값 쌍 모음으로 저장되어야 합니다.
이를 달성하기 위해 구조체는 다음을 수행할 수 있습니다. 알려진 필드와 맵 조각의 조합으로 정의:
<code class="go">type Message struct { Known1 string `json:"known1"` Known2 string `json:"known2"` Unknowns []map[string]interface{} }</code>
이 JSON 문자열:
<code class="json">{"known1": "foo", "known2": "bar", "unknown1": "car", "unknown2": 1}</code>
다음을 사용하여 역마샬링할 수 있습니다. 단계:
또는 구조체를 사용하는 대신 JSON을 map[string]인터페이스{}로 직접 역마샬링할 수 있습니다. 그러면 모든 키/값 쌍에 대한 액세스가 동적 컬렉션으로 제공됩니다.
<code class="go">var msg map[string]interface{} json.Unmarshal([]byte(jsonMsg), &msg)</code>
구조체와 맵 중 하나를 선택하는 것은 애플리케이션의 특정 요구 사항에 따라 다릅니다. 미리 정의된 알려진 필드와 구조화된 접근 방식이 필요한 경우 구조체가 적합합니다. 알려지지 않은 필드의 정확한 특성을 사전에 알 수 없거나 보다 유연한 동적 데이터 구조가 필요한 경우 지도가 적합한 옵션입니다.
위 내용은 임의의 키/값 쌍을 사용하여 JSON을 Go 구조체로 역정렬화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!