簡體   English   中英

是否可以使用具有多個JSON標記的結構?

[英]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編碼包,支持多個標記鍵(例如json1json2 )或多次出現的相同鍵(如示例所示)。

盡管如此,有兩個相同布局的結構(namin,類型和字段的排序需要精確匹配)是從一個轉換到另一個。 我會非常謹慎地做到這一點,並確保第二種類型(示例中的欄)未被導出以防止在其他地方使用。

https://play.golang.org/p/y8EH1U9_3jN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM