GoLang でネストされた JSON をループする
動的処理のためにネストされた JSON 構造からキーと値のペアを抽出するための要件が存在します。この構造を効率的に走査するには、次のアプローチが推奨されます。
範囲ループで型アサーションを使用する
応答で提供されているように、型アサーションを使用して反復的に実行できます。ネストされた JSON オブジェクトのコンテンツにアクセスして処理します。次のサンプル コードは、このアプローチを示しています。
package main import ( "encoding/json" "fmt" ) func main() { // Create a map for the JSON data m := map[string]interface{}{} // Unmarshal the JSON input into the map err := json.Unmarshal([]byte(input), &m) if err != nil { panic(err) } // Recursively parse the map parseMap(m) } func parseMap(aMap map[string]interface{}) { for key, val := range aMap { switch concreteVal := val.(type) { case map[string]interface{}: fmt.Println(key) parseMap(concreteVal) case []interface{}: fmt.Println(key) parseArray(concreteVal) 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(concreteVal) case []interface{}: fmt.Println("Index:", i) parseArray(concreteVal) default: fmt.Println("Index", i, ":", concreteVal) } } } const input = ` { "outterJSON": { "innerJSON1": { "value1": 10, "value2": 22, "InnerInnerArray": [ "test1" , "test2"], "InnerInnerJSONArray": [{"fld1" : "val1"} , {"fld2" : "val2"}] }, "InnerJSON2":"NoneValue" } } `
このコードでは、parseMap 関数と parseArray 関数がネストされた JSON 構造を再帰的に走査し、キーと値のペアを階層的に出力します。このアプローチは、JSON の複雑さに関係なく、JSON のデータにアクセスして処理するための多用途のメカニズムを提供します。
以上が型アサーションを使用して GoLang でネストされた JSON を効率的に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。