"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go에서 혼합 데이터 유형이 있는 JSON 배열을 역정렬화하는 방법은 무엇입니까?

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

2024년 12월 22일에 게시됨
검색:107

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 배열을 효과적으로 역마샬링할 수 있습니다.

최신 튜토리얼 더>

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

Copyright© 2022 湘ICP备2022001581号-3