Go でネストされた JSON 構造をループする
この質問では、Go でネストされた JSON 構造を効率的に反復する方法を検討します。質問に示されている JSON の例を考えてみましょう。目標は、この複雑な JSON 構造からすべてのキーと値のペアを抽出することです。
型の切り替えと再帰を組み合わせて使用すると、文字列キーのインターフェイス値へのマップを解析するカスタム関数を実装できます。
func parseMap(aMap map[string]interface{}) { for key, val := range aMap { switch concreteVal := val.(type) { case map[string]interface{}: fmt.Println(key) parseMap(val.(map[string]interface{})) case []interface{}: fmt.Println(key) parseArray(val.([]interface{})) default: fmt.Println(key, ":", concreteVal) } } }
同様に、インターフェイス値の配列を再帰的に解析できます。
func parseArray(anArray []interface{}) { for i, val := range anArray { switch concreteVal := val.(type) { case map[string]interface{}: fmt.Println("Index:", i) parseMap(val.(map[string]interface{})) case []interface{}: fmt.Println("Index:", i) parseArray(val.([]interface{})) default: fmt.Println("Index", i, ":", concreteVal) } } }
これらを呼び出すことにより、再帰的に関数を実行すると、JSON 構造を反復処理して、すべてのキーと値のペアを目的の形式で抽出できます。
以上がGo でネストされた JSON 構造を効率的に反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。