![](/img/trans.png)
[英]How to have a Development struct and Production struct in Golang with identical members but different JSON tags?
[英]Is it possible to have a struct with multiple JSON tags?
我向服務器發布請求並以JSON格式獲得回復。 我能夠將它解組為一個結構。 然后我需要創建一個具有相同數據但不同JSON標記的新JSON文件。
例:
在下面的代碼中,我從服務器獲取{"name":"Sam","age":20}
並將其解組為struct Foo
:
type Foo struct {
Name string `json:"name"`
Age int `json:"age"`
}
然后我需要將標簽name
更改為employee_name
並省略age
:
type Bar struct {
Name string `json:"employee_name"`
Age int `json:"-"`
}
之后,我將此修改后的數據發送到另一台服務器。
我知道我可以創建一個新的Bar
並將所有數據復制到其中,但是有很多字段。 我想知道是否有一種方法可以附加多個這樣的JSON標記:
type Foo struct {
Name string `json:"name" json:"employee_name"`
Age int `json:"age" json:"-"`
}
提前致謝。
這是不可能的。 encoding/json
包只處理struct標簽中的json
鍵。 如果多次列出json
鍵(如示例所示),則將使用第一個匹配項(這在StructTag.Get()
)。
請注意,這是encoding/json
包的實現限制,而不是Go的實現限制。 可以輕松創建一個類似的JSON編碼包,支持多個標記鍵(例如json1
, json2
)或多次出現的相同鍵(如示例所示)。
盡管如此,有兩個相同布局的結構(namin,類型和字段的排序需要精確匹配)是從一個轉換到另一個。 我會非常謹慎地做到這一點,並確保第二種類型(示例中的欄)未被導出以防止在其他地方使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.