JSON 역직렬화 시 인터페이스 어설션 실패
이런 상황에서는 역직렬화 후 인터페이스를 특정 구조체 유형으로 어설션하려고 할 때 문제가 발생합니다. JSON 데이터. 오류 메시지는 예상되는 객체 유형이 map[string]interface{}이지만 실제 객체는 Data 유형의 사용자 정의 구조체임을 나타냅니다.
설명
인터페이스 어설션을 사용하면 인터페이스 값을 특정 유형으로 변환할 수 있습니다. 그러나 인터페이스의 기본 값이 실제로 대상 유형과 일치하는지 확인하는 것이 중요합니다. 이 경우 인터페이스 데이터에는 중첩된 필드가 있는 복잡한 개체가 포함되어 있지만 main.Data는 간단한 구조체입니다. 따라서 데이터 유형에 대한 어설션은 유효하지 않습니다.
해결 방법
이 문제를 해결하려면 인터페이스 데이터가 대상 구조체와 일치하는지 확인하거나 어설션을 수행하기 전에 데이터 유형을 동적으로 확인하세요.
직렬 역직렬화
직렬 역직렬화의 경우 다음 접근 방식을 사용할 수 있습니다.
var result Data err := json.Unmarshal(data, &result) if err != nil { // Handle error }
이 방법은 JSON 데이터를 데이터 구조로 직접 역직렬화하여 인터페이스 어설션이 필요하지 않습니다.
인터페이스 확인 및 어설션
또는 다음과 같은 경우 인터페이스 어설션을 수행해야 하는 경우 먼저 기본 값이 올바른 유형인지 확인해야 합니다.
result, ok := anInterface.(Data) if !ok { // Handle type mismatch error }
이 검사를 통해 유효한 유형 변환만 수행되어 런타임 오류가 방지됩니다.
위 내용은 JSON 역직렬화로 인해 인터페이스 어설션이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!