所有使用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
}
}
什麼是最好的方式去做呢?標準庫中是否有任何有用的庫或函數?
更新:數據的來源是數據庫。在結果中,我需要獲取JSON作爲字符串將其發佈到外部Web服務。所以,程序只是從數據庫中讀取數據,並向POST服務發出POST請求。
我認爲你可以用自定義封送拆封器來實現這一點。我認爲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-/ 40568896#40568896)。這個例子是'Unmarshal',但想法是一樣的,即將你的對象保存爲'map [string] interface {}',然後使用'json.Marshal'將該對象序列化爲JSON。 – putu