>백엔드 개발 >Golang >알려진 키/값 쌍이 포함된 JSON을 Go 구조체로 구문 분석하는 방법은 무엇입니까?

알려진 키/값 쌍이 포함된 JSON을 Go 구조체로 구문 분석하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-28 02:13:30476검색

How to Parse JSON with Known and Unknown Key/Value Pairs into a Go Struct?

임의의 키/값 쌍을 Struct로 사용하여 JSON 비정렬화

문제

알려진 키/값 쌍과 알 수 없는 키/값 쌍이 있는 JSON 문자열을 어떻게 구문 분석할 수 있나요? Go 구조체로? 알 수 없는 필드는 모든 이름과 값 유형(string, bool, float64 또는 int)을 가질 수 있습니다.

해결책

알려진 필드와 알 수 없는 필드에 대한 맵 조각을 사용하여 구조체를 만듭니다. :

<code class="go">type Message struct {
    Known1   string `json:"known1"`
    Known2   string `json:"known2"`
    Unknowns []map[string]interface{}
}</code>

JSON 문자열을 이 구조체로 역정렬화합니다.

<code class="go">json.Unmarshal([]byte(jsonMsg), &msg)</code>

Unknowns 필드에는 알 수 없는 키/값 쌍을 나타내는 맵 목록이 포함됩니다.

대안

  1. 이중 비정렬화:

    • 먼저, 알려진 필드만 포함하는 임시 구조체로 비정렬화합니다.
    • 그런 다음 다시 map[string]인터페이스{}로 비정렬화하고 알 수 없는 값을 수동으로 추출합니다.
  2. 비정렬화 및 유형 변환:

    • map[string]인터페이스{}로 비정렬화합니다.
    • 맵을 반복하고 적절한 유형에 값을 입력합니다.

고려 사항

세 가지 솔루션 모두 유효하지만 가장 간단하고 우아한 것은 초기 구조체 기반 접근 방식입니다. 추가적인 역마샬링이나 수동 유형 변환이 필요하지 않습니다.

위 내용은 알려진 키/값 쌍이 포함된 JSON을 Go 구조체로 구문 분석하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.