"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 알려진 키/값 쌍이 포함된 JSON을 Go 구조체로 구문 분석하는 방법은 무엇입니까?

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

2024-11-07에 게시됨
검색:705

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

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

문제

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

해결책

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

type Message struct {
    Known1   string `json:"known1"`
    Known2   string `json:"known2"`
    Unknowns []map[string]interface{}
}

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

json.Unmarshal([]byte(jsonMsg), &msg)

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

대안

  1. Double Unmarshal:

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

    • 맵으로 비정렬화[문자열]인터페이스{}.
    • 맵을 반복하고 유형을 사용하여 값을 적절한 유형으로 주장 .

고려 사항

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

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3