Go Lang でネストされた非構造化 JSON を処理することは重要なタスクです。 JSON (JavaScript Object Notation) は一般的に使用されるデータ交換形式ですが、JSON データが複雑にネストされている場合、処理が困難になる場合があります。 PHP エディターの Yuzai は、このデータをより効率的に解析して操作できるように、Go Lang でネストされた非構造化 JSON を処理するためのいくつかの方法とテクニックを紹介します。これらのスキルを習得すると、複雑な JSON データを簡単に処理できるようになり、コードの可読性と保守性が向上します。
golangで非構造化jsonデータから特定のデータにアクセスする方法を理解しようとしています。次のjsonがあり、foo1に空のfoo2とは異なるデータがあるときに、マテリアルの下の「foo1」にアクセスしようとしています。 foo1 のようなオブジェクトにデータがある場合、同じ名前の分類セクションからデータを読み取る必要もあります。例えば。マテリアルセクションの foo1 にはデータがあるため、マテリアル -> foo1 のメソッドキー値とカテゴリ -> foo1 の記述を出力する必要がありました。
リーリーfoo1 が空でない場合、期待される出力:
package main import ( "encoding/json" "fmt" ) type new struct { desc string `json:"desc"` } func main() { bjson := `{ "classifications": { "foo1": { "desc": "it may be possible.", "sol": "the backups.", "ref": { "sensitive information": "https://www.sensitive_information.html", "control sphere": "https://ww.example.org/data.html" },"bar1": { "desc": "the target", "sol": "should be used.", "ref": { "abc: srgery": "https://www.orp.org/" } }}, "material": { "backup file": [],"foo1": [ { "method": "get", "info": "it is not set", "level": 1, "parameter": "", "referer": "", "module": "diq", "curl_command": "curl \"https://example.com/\"", "wsg": [ "conf-12", "o-policy" ] }],"foo2": [],"bar1": []}, "anomalies": { "server error": [], "resource consumption": [] }, "additionals": { "web technology": [], "methods": [] }, "infos": { "url": "https://example.com/", "date": "thu, 08 dec 2022 06:52:04 +0000"}}}` var parseddata = make(map[string]map[string]new) json.unmarshal([]byte(bjson), &parseddata) fmt.println("output of parseddata - \n", parseddata["classifications"]["foo1"].desc) //for _, v := range parseddata["material"] { // fmt.println(v) //} }
これを map[string]interface{}
変数にアンマーシャリングし、一連の型アサーションを使用して必要な情報を取得できます。例: ###
リーリー
リーリー
これは、コードの完全な実行可能なバージョンです:リーリー
これをビルドすると:リーリー
仕組みは次のとおりです:リーリー
値が存在しないか、空のリストであるかどうかを確認します:リーリー
以上がGo Lang でのネストされた非構造化 JSON の処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。