>백엔드 개발 >Golang >JSON이 배열을 Go 구조체로 역마샬링하면 패닉이 발생하는 이유는 무엇입니까?

JSON이 배열을 Go 구조체로 역마샬링하면 패닉이 발생하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-16 10:49:10787검색

Why Does JSON Unmarshaling an Array into a Go Struct Cause a Panic?

Panic: JSON Unmarshal Array into Go Struct

JSON API에서 데이터를 구문 분석하려고 할 때 다음 오류가 발생했습니다. "panic: json: 배열을 main.Structure 유형의 Go 값으로 역마샬링할 수 없습니다." JSON 배열을 Go 구조체로 역마샬링할 때 문제가 발생합니다.

사용자 코드:

type Structure struct {
        stuff []interface{}
}

func main() {
        // ...

        decoded := &Structure{}
        err = json.Unmarshal(body, decoded)
}

예상 결과:

코드가 인터페이스 목록을 반환할 것으로 예상했습니다. object.

실제 결과:

대신 JSON 배열을 Structure Go 값으로 언마샬링할 수 없다는 오류를 받았습니다.

해결책:

이 문제를 해결하려면 다음 두 가지를 고려하세요. 접근 방식:

  1. 슬라이스에 대한 비정렬화:

    행 바꾸기:

    decoded := &Structure{}

    다음으로:

    var data []interface{}

    이렇게 하면 JSON 배열이 다음 조각으로 비정렬화됩니다. 인터페이스.

  2. 구조체 조각에 대한 비정렬화:

    응답 데이터 구조에 대한 특정 구조체를 만듭니다. 예를 들면 다음과 같습니다.

    type Tick struct {
      ID string
      Name string
      Symbol string
      Rank string
      Price_USD string
    }

    그런 다음 다음 구조체의 일부를 비정렬화합니다.

    var data []Tick
    err = json.Unmarshal(body, &data)

위 내용은 JSON이 배열을 Go 구조체로 역마샬링하면 패닉이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.