혼합 데이터 유형이 있는 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