ホームページ バックエンド開発 Golang Goで未知の構造を持つJSONをデコードするにはどうすればよいですか?

Goで未知の構造を持つJSONをデコードするにはどうすればよいですか?

Dec 28, 2024 am 10:23 AM

How to Decode JSON with an Unknown Structure in Go?

構造が不明な JSON のデコード

プログラミングの分野では、JSON (JavaScript Object Notation) は、内部のデータを表現する手段として機能することがよくあります。ソフトウェアアプリケーション。ただし、馴染みのない構造の JSON に遭遇した場合、特定の情報を抽出することが困難になる可能性があります。次のシナリオを考えてみましょう:

次のように JSON 文字列を処理する必要があります:

{ 
  "votes": { 
    "option_A": "3" 
  } 
}
ログイン後にコピー

目標は、「count」キーを含めてこの JSON を拡張することです。その結果、次の出力が得られます。 :

{ 
  "votes": { 
    "option_A": "3" 
  }, 
  "count": "1" 
}
ログイン後にコピー
ログイン後にコピー

この課題は、初期 JSON の未知の構造から生じます。特定の型付き構造体で json.Unmarshal 関数を使用するなどの従来の方法は適用できなくなります。

解決策: マップにアンマーシャルする

この障害を克服するには、次のようにします。 Go のマップの柔軟性を活用できます。次のコード スニペットは、JSON をマップ[文字列]インターフェイス{}にアンマーシャリングする方法を示しています。

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    in := []byte(`{ 
      "votes": { 
        "option_A": "3" 
      } 
    }`)
    var raw map[string]interface{}
    if err := json.Unmarshal(in, &raw); err != nil {
        panic(err)
    }
    
    // Modify the map by adding the "count" key
    raw["count"] = 1
    
    // Marshal the modified map back to JSON
    out, err := json.Marshal(raw)
    if err != nil {
        panic(err)
    }
    
    fmt.Println(string(out))
}
ログイン後にコピー

JSON をマップにアンマーシャリングすることで、あらゆる入力に対応できる型に依存しないデータ構造を効果的に作成します。 。これにより、事前定義された型に依存せずに、JSON コンテンツに動的にアクセスして変更することができます。

上記のコードの最終出力は次のとおりです。

{ 
  "votes": { 
    "option_A": "3" 
  }, 
  "count": "1" 
}
ログイン後にコピー
ログイン後にコピー

このアプローチは、便利で柔軟な機能を提供します。未知の構造を持つ JSON をデコードするためのソリューションで、開発者がデータを効率的に抽出して操作できるようにします。

以上がGoで未知の構造を持つJSONをデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Debian OpenSSLの脆弱性は何ですか Debian OpenSSLの脆弱性は何ですか Apr 02, 2025 am 07:30 AM

OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

PPROFツールを使用してGOパフォーマンスを分析しますか? PPROFツールを使用してGOパフォーマンスを分析しますか? Mar 21, 2025 pm 06:37 PM

この記事では、プロファイリングの有効化、データの収集、CPUやメモリの問題などの一般的なボトルネックの識別など、GOパフォーマンスを分析するためにPPROFツールを使用する方法について説明します。

Go's Crawler Collyのキュースレッドの問題は何ですか? Go's Crawler Collyのキュースレッドの問題は何ですか? Apr 02, 2025 pm 02:09 PM

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

Goでユニットテストをどのように書きますか? Goでユニットテストをどのように書きますか? Mar 21, 2025 pm 06:34 PM

この記事では、GOでユニットテストを書くことで、ベストプラクティス、モッキングテクニック、効率的なテスト管理のためのツールについて説明します。

GOの浮動小数点番号操作に使用されるライブラリは何ですか? GOの浮動小数点番号操作に使用されるライブラリは何ですか? Apr 02, 2025 pm 02:06 PM

GO言語の浮動小数点数操作に使用されるライブラリは、精度を確保する方法を紹介します...

フロントエンドからバックエンドの開発に変身すると、JavaやGolangを学ぶことはより有望ですか? フロントエンドからバックエンドの開発に変身すると、JavaやGolangを学ぶことはより有望ですか? Apr 02, 2025 am 09:12 AM

バックエンド学習パス:フロントエンドからバックエンドへの探査の旅は、フロントエンド開発から変わるバックエンド初心者として、すでにNodeJSの基盤を持っています...

go.modファイルで依存関係をどのように指定しますか? go.modファイルで依存関係をどのように指定しますか? Mar 27, 2025 pm 07:14 PM

この記事では、go.modを介してGOモジュールの依存関係の管理、仕様、更新、競合解決をカバーすることについて説明します。セマンティックバージョンや定期的な更新などのベストプラクティスを強調しています。

Beego ormのモデルに関連付けられているデータベースを指定する方法は? Beego ormのモデルに関連付けられているデータベースを指定する方法は? Apr 02, 2025 pm 03:54 PM

Beegoormフレームワークでは、モデルに関連付けられているデータベースを指定する方法は?多くのBEEGOプロジェクトでは、複数のデータベースを同時に操作する必要があります。 Beegoを使用する場合...

See all articles