ホームページ > バックエンド開発 > Golang > 型アサーションを使用して GoLang でネストされた JSON を効率的に解析するにはどうすればよいですか?

型アサーションを使用して GoLang でネストされた JSON を効率的に解析するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-26 08:06:12
オリジナル
517 人が閲覧しました

How to Efficiently Parse Nested JSON in GoLang Using Type Assertion?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート