我向服務(wù)器發(fā)布請(qǐng)求并獲得 JSON 格式的回復(fù)。我能夠?qū)⑵浣饨M為結(jié)構(gòu)。然后我需要?jiǎng)?chuàng)建一個(gè)新的 JSON 文件,它具有相同的數(shù)據(jù)但不同的 JSON 標(biāo)簽。例子:在以下代碼中,我{"name":"Sam","age":20}從服務(wù)器獲取并將其解組到 struct Foo:type Foo struct { Name string `json:"name"` Age int `json:"age"`}然后我需要將標(biāo)簽更改name為employee_name并省略age:type Bar struct { Name string `json:"employee_name"` Age int `json:"-"`}之后,我將此修改后的數(shù)據(jù)發(fā)送到另一臺(tái)服務(wù)器。我知道我可以創(chuàng)建一個(gè)新的Bar并將所有數(shù)據(jù)復(fù)制到其中,但是有很多字段。我想知道是否有辦法像這樣附加多個(gè) JSON 標(biāo)簽:type Foo struct { Name string `json:"name" json:"employee_name"` Age int `json:"age" json:"-"`} 提前致謝。
2 回答

慕運(yùn)維8079593
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
這是不可能的。該encoding/json
包僅處理json
結(jié)構(gòu)標(biāo)記中的鍵。如果json
鍵被多次列出(如您的示例中),將使用第一次出現(xiàn)(這在 中實(shí)現(xiàn)StructTag.Get()
)。
請(qǐng)注意,這是encoding/json
包的實(shí)現(xiàn)限制,而不是 Go 的限制??梢暂p松創(chuàng)建一個(gè)類似的 JSON 編碼包,支持多個(gè)標(biāo)簽鍵(例如json1
, json2
)或同一鍵的多次出現(xiàn)(如您的示例中所示)。

茅侃侃
TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
但是,對(duì)于 2 個(gè)布局相同的結(jié)構(gòu)(字段的名稱、類型和順序需要完全匹配),有可能從一個(gè)轉(zhuǎn)換到另一個(gè)。不過,我會(huì)非常謹(jǐn)慎地這樣做,并確保未導(dǎo)出第二種類型(在您的示例中為 bar)以防止在其他地方使用。
https://play.golang.org/p/y8EH1U9_3jN
- 2 回答
- 0 關(guān)注
- 232 瀏覽
添加回答
舉報(bào)
0/150
提交
取消