>  기사  >  백엔드 개발  >  Go에서 데이터 유형이 혼합된 JSON 배열을 역정렬화하는 방법은 무엇입니까?

Go에서 데이터 유형이 혼합된 JSON 배열을 역정렬화하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-24 03:52:09721검색

How to Unmarshal JSON Arrays with Mixed Data Types in Go?

혼합 데이터 유형이 포함된 JSON 배열 역마샬링

다양한 데이터 유형의 값이 포함된 JSON 배열을 역마샬링하는 작업은 종종 어려울 수 있습니다. 예를 들어, 다음 JSON 배열을 고려해 보세요.

{["NewYork",123]}

문제:

먼저 제공된 JSON이 구문상 올바르지 않다는 점에 유의하는 것이 중요합니다. JSON 객체에는 각 값에 대한 키가 필요하므로 올바른 표현은 {"key":["NewYork",123]} 또는 간단히 ["NewYork",123]입니다.

게다가 JSON을 처리할 때 여러 데이터 유형으로 구성된 배열의 경우 Go 배열에 지정된 유형이 필요할 때 문제가 발생합니다. 이로 인해 이러한 상황을 어떻게 처리해야 할지 고민하게 될 수 있습니다.

해결책:

이 문제를 해결하는 핵심은 유형 인터페이스{}를 사용하는 것입니다. 명시적인 유형 변환 없이도 다양한 유형의 값을 처리할 수 있습니다. 다음은 작동 방식을 보여주는 코드 예시입니다.

import (
    "encoding/json"
    "fmt"
)

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)
}

이 예시에서는 문자열을 인터페이스{}의 조각에 매핑하는 사용자 지정 유형으로 UntypedJson을 사용합니다. 인터페이스{} 유형을 활용하면 JSON 배열 내에서 혼합 데이터 유형을 쉽게 처리할 수 있습니다.

프로그램의 출력은 다음과 같습니다.

<nil>
map[string][]interface{}{"NYC": \["NewYork" 123]}

결론:

인터페이스{} 유형을 활용하면 이 접근 방식을 통해 다양한 데이터가 포함된 JSON 배열을 효과적으로 역마샬링할 수 있습니다. 유형입니다.

위 내용은 Go에서 데이터 유형이 혼합된 JSON 배열을 역정렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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