정렬 해제 후 Golang에서 중첩된 JSON 배열에 액세스
Golang에서 JSON 응답으로 작업할 때 중첩된 JSON 요소에 액세스하는 데 어려움을 겪을 수 있습니다. 정렬. 이는 "객체" 배열 내의 특정 요소에 액세스하려고 할 때 발생할 수 있으며, "유형 인터페이스 {}는 인덱싱을 지원하지 않습니다."와 같은 오류가 발생합니다.
오류 원인
이 오류는 Go의 인터페이스 변수가 인덱싱을 지원하지 않기 때문에 발생합니다. JSON 페이로드를 인터페이스 변수로 디코딩하면 JSON 모듈은 배열을 []interface{} 슬라이스로 나타내고 사전을 map[string]interface{} 맵으로 나타냅니다.
해결책 1: 유형 어설션 사용
"객체" 배열 내의 특정 요소에 액세스하려면 유형 어설션을 사용하여 인터페이스 변수를 구체적인 유형으로 변환할 수 있습니다. 그러나 이 접근 방식에서는 유형 어설션이 실패한 경우를 처리하기 위해 오류 검사가 필요합니다.
<code class="go">objects := result["objects"].([]interface{}) first := objects[0].(map[string]interface{}) fmt.Println(first["ITEM_ID"])</code>
해결책 2: 구조로 디코딩
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"` } var result Result if err := json.Unmarshal(payload, &result); err != nil { panic(err) } fmt.Println(result.Objects[0].ItemId)</code>
특정 사용 사례에 따라 적절한 솔루션을 선택하면 이후 Golang의 중첩된 JSON 배열에 원활하게 액세스할 수 있습니다. 언마샬링 중입니다.
위 내용은 언마샬링 후 Golang에서 중첩된 JSON 배열에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!