ホームページ > バックエンド開発 > Golang > Go で不明な構造を持つ JSON オブジェクトを変更するにはどうすればよいですか?

Go で不明な構造を持つ JSON オブジェクトを変更するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-27 16:58:14
オリジナル
175 人が閲覧しました

How Can I Modify a JSON Object with an Unknown Structure in Go?

不明な構造の JSON の処理: アンマーシャリングと変更

多くのプログラミング シナリオでは、不明な構造の JSON データを扱うのは困難な場合があります。ただし、Go は、この障害を克服するソリューションを提供します。

次のような JSON 文字列を受け取る状況を考えてみましょう。

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

あなたの目標は、次のような新しい "count" キーを追加することです。 JSON オブジェクトに「1」の値を設定します。ただし、JSON 構造は予測できないため、事前定義された構造体で標準の json.Unmarshal 関数を使用することはできません。

この課題に対処するには、map[string]interface{} タイプを利用できます。これにより、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)
    }

    raw["count"] = 1

    out, err := json.Marshal(raw)
    if err != nil {
        panic(err)
    }

    fmt.Println(string(out))
}
ログイン後にコピー

このコードでは、JSON データを生のマップにアンマーシャリングします。構造が不明なため、値はインターフェイスとして表されます。

その後、キーとして「count」、値として 1 を含む新しいキーと値のペアを追加することで、マップを変更できます。最後に、json.Marshal を使用して、変更したマップを JSON 文字列にマーシャリングします。

出力は期待どおりになります。

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

この手法は、JSON データを次のように処理する柔軟な方法を提供します。未知の構造を利用できるため、必要に応じてデータを変更および強化できます。

以上がGo で不明な構造を持つ JSON オブジェクトを変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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