Go 구조체에서 임의의 JSON 키 처리
JSON 응답에는 Go 구조체에서 정적으로 정의할 수 없는 다양한 키가 포함되어 있습니다. 이 문제를 해결하려면 동적 키-값 쌍을 허용하는 맵 데이터 구조를 사용하는 것이 좋습니다.
동적 키에 맵 사용
다음 코드는 다음과 같은 구조체를 정의합니다. 맵을 사용하여 임의의 키-값 쌍을 나타냅니다.
type Items map[string][]ImageUrl
여기서 Items는 문자열(키 JSON에서)를 ImageUrl 구조체의 조각으로 변환합니다. 각 ImageUrl 구조체는 해당 크기와 함께 단일 이미지 URL을 나타냅니다.
샘플 사용
이 수정된 코드 버전은 Items 구조체를 사용하는 방법을 보여줍니다.
type ImageUrl struct { Url string Width, Height int } type Items map[string][]ImageUrl func main() { json := `{"items": [{"name": "thing", "image_urls": { "50x100": [{ "url": "http://site.com/images/1/50x100.jpg", "width": 50, "height": 100 }, { "url": "http://site.com/images/2/50x100.jpg", "width": 50, "height": 100 }], "200x300": [{ "url": "http://site.com/images/1/200x300.jpg", "width": 200, "height": 300 }], "400x520": [{ "url": "http://site.com/images/1/400x520.jpg", "width": 400, "height": 520 }] } } }` var items Items if err := json.Unmarshal([]byte(json), &items); err != nil { // Handle error } fmt.Println(items) // Prints the map containing the keys and values }
이 예에서 json.Unmarshal 함수는 적절한 키-값으로 Items 맵을 자동으로 채웁니다. 쌍. 그런 다음 필요에 따라 데이터에 액세스하고 조작할 수 있습니다.
참고: 이 접근 방식에서는 JSON에 중첩된 키가 일관적이라고 가정합니다. 그렇지 않은 경우 중첩된 맵이나 맵 조각과 같은 더 복잡한 데이터 구조를 사용해야 할 수도 있습니다.
위 내용은 Go 구조체에서 임의의 JSON 키를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!