>  기사  >  백엔드 개발  >  Go JSON Unmarshalling에서 중첩 배열을 처리하는 방법은 무엇입니까?

Go JSON Unmarshalling에서 중첩 배열을 처리하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-05 16:10:031015검색

How to Handle Nested Arrays in Go JSON Unmarshalling?

Golang JSON: 언마샬링으로 중첩 배열 처리

Go에서는 언마샬링 후 중첩 JSON 배열로 작업할 때 오류를 이해하는 것이 중요합니다. "유형 인터페이스 {}는 인덱싱을 지원하지 않습니다." 이 오류는 인터페이스{} 변수에 저장된 JSON 배열 내의 요소에 액세스하려고 할 때 발생합니다.

이 문제를 해결하려면 유형 어설션을 활용하여 인터페이스{} 변수를 기본 배열 유형.

인터페이스{} JSON 모듈의 표현

JSON 모듈은 배열을 []인터페이스{} 슬라이스로, 사전을 map[string]interface{로 나타냅니다. }는 인터페이스{} 변수로 디코딩할 때 매핑됩니다.

유형 어설션을 사용하여 중첩 요소에 액세스

오류 검사 없이 다음과 같이 유형 어설션을 사용하여 JSON 배열을 탐색할 수 있습니다. :

<code class="go">objects := result["objects"].([]interface{})
first := objects[0].(map[string]interface{})
fmt.Println(first["ITEM_ID"])</code>

그러나 이러한 유형 어설션은 유형이 일치하지 않으면 당황할 수 있다는 점에 유의하는 것이 중요합니다. 이 문제를 방지하려면 2회 반환 형식을 사용하여 오류를 확인할 수 있습니다.

<code class="go">objects, ok := result["objects"].([]interface{})
if !ok {
    // Handle error here
}</code>

접근 개선을 위한 구조로 디코딩

JSON이 데이터가 일관된 형식을 따르므로 보다 효율적인 솔루션은 이를 구조화된 유형으로 디코딩하는 것입니다. 예를 들어 제공된 데이터를 기반으로

<code class="go">type Result struct {
    Query   string `json:"query"`
    Count   int    `json:"count"`
    Objects []struct {
        ItemId      string `json:"ITEM_ID"`
        ProdClassId string `json:"PROD_CLASS_ID"`
        Available   int    `json:"AVAILABLE"`
    } `json:"objects"`
}</code>

이 구조를 디코딩하면 result.Objects[0].ItemId를 사용하여 항목 ID에 직접 액세스할 수 있습니다. 이 접근 방식을 사용하면 유형 어설션이 필요하지 않으며 중첩된 요소에 액세스하기 위한 유형이 안전한 방법을 제공합니다.

위 내용은 Go JSON Unmarshalling에서 중첩 배열을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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