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 중국어 웹사이트의 기타 관련 기사를 참조하세요!