Go에서 다양한 값 유형을 사용하여 JSON 역마샬링
Go에서 JSON 역마샬링에는 일반적으로 JSON 데이터를 해당 구조체에 매핑하는 작업이 포함됩니다. 그러나 데이터 구조가 다양하여 키 값을 객체 또는 문자열의 배열로 표시하면 문제가 발생합니다.
문제:
API가 일관되지 않은 데이터 구조를 제공하여 결과적으로 키에 대한 잠재적인 값 변형: 인라인 객체 또는 객체에 대한 참조(/obj1/is/at/this/path).
해결책:
이 가변성을 처리하려면 다음을 고려하십시오. 다음 기술:
1. 인터페이스 유형으로 비정렬화:
[]인터페이스{} 유형의 필드가 포함된 구조체로 JSON 데이터를 비정렬화합니다. 이렇게 하면 문자열(문자열로 디코딩됨)과 객체(map[string]interface{}로 디코딩됨)가 모두 배열에 저장될 수 있습니다.
코드 샘플:
type Data struct { MyKey []interface{} `json:"mykey"` }
2. 구별을 위한 유형 전환:
데이터가 정렬 해제되면 유형 스위치를 사용하여 문자열과 객체를 구별합니다.
코드 샘플:
for i, v := range data.MyKey { switch x := v.(type) { case string: fmt.Println("Got a string: ", x) case map[string]interface{}: fmt.Printf("Got an object: %#v\n", x) } }
추가 참고 사항:
위 내용은 Go에서 언마샬링할 때 다양한 JSON 값 유형을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!