> 백엔드 개발 > Golang > 알 수 없는 필드 이름이 있는 JSON을 Go 구조체로 역정렬화하는 방법은 무엇입니까?

알 수 없는 필드 이름이 있는 JSON을 Go 구조체로 역정렬화하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-17 11:45:25
원래의
326명이 탐색했습니다.

How to Unmarshal JSON with Unknown Field Names into a Go Struct?

알 수 없는 필드 이름이 있는 JSON을 구조체로 역마샬링

이 시나리오는 JSON 응답에 알 수 없거나 동적 이름이 있는 필드가 포함된 경우에 발생합니다. 이 문제를 해결하기 위해 맵과 구조체의 조합을 활용하여 데이터를 캡처할 수 있습니다.

수정된 코드:

package main

import "fmt"
import "encoding/json"

var body = []byte(`{
    "unknown_field": {
            "known_field_1": [[1,2,3,4,5],[10,20,30,40,50],[100,200,300,400,500]],
            "known_field_2": [[11,21,31,41,51]],
            "known_field_3": [[12,22,32,42,52],[14,44,34,44,54]]
        }
}`)

type mData struct {
    KnownField1 [][5]int `json:"known_field_1"`
    KnownField2 [][5]int `json:"known_field_2"`
    KnownField3 [][5]int `json:"known_field_3"`
}

var data map[string]mData

func main() {
    if err := json.Unmarshal(body, &data); err != nil {
        panic(err)
    }

    fmt.Println(data)
    for k, v := range data {
        fmt.Println(k, v)
    }
}
로그인 후 복사

설명:

  • 우리는 mData 구조체를 정의하여 알려진 필드를 나타냅니다. JSON.
  • 키는 알 수 없는 필드 이름이고 값은 mData의 인스턴스인 지도 데이터를 생성합니다.
  • 정렬화 해제 중에 json.Unmarshal은 JSON 데이터를 다음의 해당 필드에 할당합니다. 필드 이름을 기반으로 하는 mData.
  • 데이터 맵의 키는 JSON.

출력:

map[unknown_field:{[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]}]
unknown_field {[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]}
로그인 후 복사

위 내용은 알 수 없는 필드 이름이 있는 JSON을 Go 구조체로 역정렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿