JSONで作業するすべての例では、JSON
シンプルタイプまたはユーザータイプ(構造体など)にシリアライズする方法が説明されています。JSONの動的構造にシリアル化
しかし私は別のケースがあります:a)私のタイプ/オブジェクトのフィールドを知らない。b)すべてのオブジェクトが異なるタイプを持つ。私は、フィールド名とフィールド値を取得し、私のデータベース内の各エンティティの
while `select * from item` do
while `select fieldname, fieldvalue from fields where fields.itemid = item.id` do
...
:
はここで擬似コードで私の場合です。その結果、私はこのようなものを得る必要があります:
{
"item.field1": value,
...
"item.fieldN": value,
"custom_fields": {
"fields.field1": value,
...
"fields.fieldK": value
}
}
Goでこれを行う最良の方法は何ですか?標準ライブラリに有用なライブラリや関数はありますか?
更新:データソースはデータベースです。結果では、JSONを外部のWebサービスにPOSTするための文字列としてJSONを取得する必要があります。したがって、プログラムはデータベースからデータを読み込み、POST要求をRESTサービスに送信するだけです。
カスタムマーシャラでこれを実現できると思います。私はGoにデフォルトでこれを組み込む能力がないと思うので、あなた自身のロジックを書く必要があります。 'encoding/json'パッケージはあなたの構造体にカスタムマーシャルを許可します。見てください[ここ](https://golang.org/pkg/encoding/json/#example__customMarshalJSON)。 – Lansana
[https://stackoverflow.com/questions/40559250/golang-dynamic-creating-member-of-struct/40568896](https://stackoverflow.com/questions/40559250/golang-dynamic-creating)をご覧ください。 -member-of-struct/40568896#40568896)。この例はUnmarshalですが、アイデアは同じです。すなわち、オブジェクトを 'map [string] interface {}'に保存し、 'json.Marshal'を使用してオブジェクトをJSONにシリアル化します。 – putu