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 중국어 웹사이트의 기타 관련 기사를 참조하세요!