Go でネストされた JSON をフラット化する方法?
Oct 27, 2024 am 04:01 AM<h2>ネストされた JSON の平坦化</h2>
ネストされた JSON 応答を単一レベルに平坦化し、ネストされた Facebook タイプを削除したいと考えています。 。これを実現するには、カスタム UnmarshalJSON 関数を利用できます。ただし、よりシンプルで柔軟な解決策は、平坦化関数を使用することです。
<h3>カスタム平坦化関数</h3>
<code class="go">// Flatten takes a map and returns a new one where nested maps are replaced // by dot-delimited keys. func Flatten(m map[string]interface{}) map[string]interface{} { o := make(map[string]interface{}) for k, v := range m { switch child := v.(type) { case map[string]interface{}: nm := Flatten(child) for nk, nv := range nm { o[k+"."+nk] = nv } default: o[k] = v } } return o }</code>
<h3>平坦化関数の使用< /h3>
Go コード内:
<code class="go">var jsonBlob = []byte(`[ {"StumbleUpon":0,"Reddit":0,"Facebook":{"commentsbox_count":4691,"click_count":0,"total_count":298686,"comment_count":38955,"like_count":82902,"share_count":176829},"Delicious":0,"GooglePlusOne":275234,"Buzz":0,"Twitter":7346788,"Diggs":0,"Pinterest":40982,"LinkedIn":0} ]`) var social []Social err := json.Unmarshal(jsonBlob, &amp;social) if err != nil { fmt.Println("error:", err) } for _, s := range social { socialMap := Flatten(s) fmt.Printf("%+v\n", socialMap) }</code>
<h3>出力例</h3>
フラット化されたソーシャル マップを使用すると、次のようになります。
map[StumbleUpon:0 Reddit:0 Facebook.commentsbox_count:4691 Facebook.click_count:0 Facebook.total_count:298686 Delicious:0 GooglePlusOne:275234 Buzz:0 LinkedIn:0 Facebook.comment_count:38955 Facebook.like_count:82902 Facebook.share_count:176829 Twitter:7346788 Diggs:0 Pinterest:40982]
この出力は、「Facebook....</pre>」としてアクセス可能なすべての Facebook フィールドを含むフラット化されたソーシャル マップを示しています。
このアプローチは、JSON 応答をフラット化する一般的な方法を提供します。ネストされた型の必要性がなくなりました。
以上がGo でネストされた JSON をフラット化する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?

Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?
