알 수 없는 크기의 배열로 JSON 역마샬링
JSON을 통해 데이터를 검색할 때 반환된 JSON에 정렬. 예를 들어 스마트 미터 목록을 요청하면 "gwrcmd" 아래의 단일 요소로 수신될 수 있습니다. 그러나 전기 사용량을 요청하는 경우 "gwrcmds" 배열로 반환될 수 있습니다.
Go 구조체에는 배열 및 단일 요소에 대한 명시적인 정의가 필요하므로 이러한 모호함은 마샬링 문제를 제시합니다. 이 문제를 해결하기 위해 json.Unmarshal을 사용하여 JSON 구조를 기반으로 단일 구조체 { } 또는 배열 []struct { }를 반환할 수 있습니다.
그러나 예상되는 경우 json.Unmarshal에서 오류가 발생할 수 있습니다. 유형이 JSON 구조와 충돌합니다. 이 문제를 해결하려면 "Gwrcmd"에 대한 슬라이스 사용을 제외하고 첫 번째 구조체를 복제하는 두 번째 구조체를 만들 수 있습니다. 또는 보다 강력한 접근 방식은 json.RawMessage를 사용하여 알 수 없는 유형의 JSON 값을 캡처하고 해당 내용을 기반으로 추가 역마샬링을 수행하는 것입니다. 이렇게 하면 첫 번째 바이트만을 기준으로 배열 유형을 결정하는 추측을 피할 수 있습니다.
두 접근 방식의 예는 제공된 Go 코드 스니펫에 나와 있습니다. 또한 추가 탐색을 위해 관련 리소스가 나열되어 있습니다.
위 내용은 Go에서 알 수 없는 크기의 JSON 배열을 비정렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!