>  기사  >  백엔드 개발  >  Go에서 혼합 데이터 유형이 있는 JSON 배열을 어떻게 디코딩할 수 있나요?

Go에서 혼합 데이터 유형이 있는 JSON 배열을 어떻게 디코딩할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-11-26 10:06:10761검색

How Can I Decode JSON Arrays with Mixed Data Types in Go?

JSON에서 혼합 유형의 배열 디코딩

다양한 유형의 값이 포함된 JSON 배열을 처리할 때 비정렬화 방법을 고려하는 것이 중요합니다. 효과적으로 Go 프로그램에 추가하세요. Go 배열에는 명시적으로 정의된 유형이 필요하며, 이는 다양한 값 유형을 처리할 때 문제가 됩니다.

해결책: 인터페이스 활용{}

해결책은 인터페이스 사용에 있습니다.{} , 모든 유형의 값을 보유할 수 있는 Go의 특수 유형입니다. 인터페이스{} 배열을 사용하면 동일한 배열 내에 다양한 유형의 값을 유연하게 저장할 수 있습니다.

구현 예시

다음 JSON 예시를 고려해 보세요.

{"key": ["NewYork", 123]}

인터페이스{}를 사용하여 이 JSON을 역마샬링하려면 사용자 지정 데이터를 정의하면 됩니다. 구조:

type UntypedJson map[string][]interface{}

이 유형은 문자열에서 인터페이스 배열로의 매핑을 나타내므로{} 모든 유형의 값을 저장할 수 있습니다.

JSON 역마샬링

JSON을 비정렬화하려면 json.Unmarshal을 사용할 수 있습니다. 함수:

var ut UntypedJson
json.Unmarshal([]byte(jsonString), &ut)

이제 ut 변수에는 마샬링되지 않은 데이터가 UntypedJson 유형으로 포함됩니다. 맵 키는 JSON 개체 키에 해당하며 배열 값은 다양한 유형의 값을 보유합니다.

예제 플레이그라운드

내장된 Go 플레이그라운드가 포함된 완전한 예는 다음과 같습니다. 여기에서 확인하세요:

const j = `{"NYC": ["NewYork",123]}`

type UntypedJson map[string][]interface{}

func main() {
    ut := UntypedJson{}
    fmt.Println(json.Unmarshal([]byte(j), &ut))
    fmt.Printf("%#v", ut)
}

위 내용은 Go에서 혼합 데이터 유형이 있는 JSON 배열을 어떻게 디코딩할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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