> 백엔드 개발 > Golang > Go에서 중첩된 JSON 객체를 효율적으로 반복하는 방법은 무엇입니까?

Go에서 중첩된 JSON 객체를 효율적으로 반복하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-27 12:55:11
원래의
647명이 탐색했습니다.

How to Efficiently Iterate Over Nested JSON Objects in Go?

중첩 개체가 포함된 JSON 개체 반복

JSON 데이터를 처리할 때 중첩 개체나 배열이 포함된 개체를 만나는 것이 일반적입니다. Go에서는 이러한 구조를 반복하는 것이 복잡한 작업이 될 수 있습니다.

제공된 예에는 여러 수준의 중첩이 포함된 JSON 입력이 있습니다. 작업은 객체를 반복하고 키-값 쌍을 문자열로 추출하는 것입니다.

유형 어설션 및 재귀 함수 사용

권장되는 접근 방식은 유형 어설션 및 재귀 함수를 사용하는 것입니다. 재귀 함수는 복잡한 JSON 구조를 통해 내려갈 수 있으며 중첩된 각 객체 또는 배열에서 자신을 재귀적으로 호출합니다.

다음은 중첩된 JSON 구조를 순회하고 키-값 쌍을 인쇄하는 재귀 함수의 예입니다.

func parseMap(m map[string]interface{}) {
    for key, val := range m {
        switch val.(type) {
        case map[string]interface{}:
            parseMap(val.(map[string]interface{}))
        case []interface{}:
            parseArray(val.([]interface{}))
        default:
            fmt.Println(key, ":", val)
        }
    }
}

func parseArray(arr []interface{}) {
    for i, val := range arr {
        switch val.(type) {
        case map[string]interface{}:
            parseMap(val.(map[string]interface{}))
        case []interface{}:
            parseArray(val.([]interface{}))
        default:
            fmt.Println("Index:", i, ":", val)
        }
    }
}
로그인 후 복사

이 예에서는 중첩된 지도에서parseMap 함수가 재귀적으로 호출되고,parseArray 함수는 재귀적으로 호출됩니다. 중첩 배열에서. 유형 어설션을 사용하면 각 값의 유형을 결정하고 그에 따라 처리할 수 있습니다.

코드 실행

코드를 실행하려면 json을 사용하여 입력 JSON을 맵으로 역마샬링할 수 있습니다. .언마샬링 기능. 그런 다음, 마샬링되지 않은 맵을 인수로 전달하여parseMap 함수를 호출합니다. 추출된 키-값 쌍을 표시하면서 출력이 인쇄됩니다.

결론

유형 어설션과 재귀 함수를 사용하는 이 접근 방식은 중첩된 값을 탐색하고 검사하는 체계적이고 효율적인 방법을 제공합니다. JSON 구조. 데이터 구조를 이해하고 이러한 기술을 사용하면 추가 분석이나 처리를 위해 키-값 쌍을 효과적으로 추출하고 처리할 수 있습니다.

위 내용은 Go에서 중첩된 JSON 객체를 효율적으로 반복하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿