4 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
我要說不,不是這樣。
你可以這樣做,
type XMLStruct struct {
Name string `json:"name" xml:"name"`
Date string `json:"Date" xml:"Date"`
}
或這個(gè),
type XMLStruct struct {
Name string `json:"name, omitempty" xml:"name, omitempty"`
Date string `json:"Date, omitempty" xml:"Date, omitempty"`
FirstName string `json:"FirstName, omitempty" xml:"FirstName, omitempty"`
}
但我不相信你可以將多個(gè) json 名稱映射到一個(gè)結(jié)構(gòu)字段,我認(rèn)為這樣做的原因是如果它們都存在于 json 結(jié)構(gòu)中,你會保留哪一個(gè)并丟棄等等。

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
對此沒有明確的答案。在語言規(guī)范級別,結(jié)構(gòu)標(biāo)簽是任意文本,沒有固有含義。這意味著,從語言的角度來看,json:"name" json:"FirstName"
它是一個(gè)有效的標(biāo)簽,就像任何其他任意文本一樣。
重要的是代碼如何解釋標(biāo)簽。既然您正在談?wù)摌?biāo)簽json
,您可能會關(guān)心encoding/json
標(biāo)準(zhǔn)庫中的包。這里和這里的文檔描述了這個(gè)包如何解釋標(biāo)簽。像這樣的重復(fù)標(biāo)簽充其量是不明確的,因此可以說它不受支持。盡管使用這樣的標(biāo)簽會有所作為。它的作用可能符合也可能不符合您的期望(取決于您的期望)。
但可能還有其他包可以解釋json
標(biāo)簽——可能包括您自己編寫的包。他們可以使用任何他們想要的規(guī)則,包括允許或禁止多個(gè)具有相同名稱的標(biāo)簽段。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
go-struct 的字段標(biāo)記實(shí)際上可以具有任何 UTF-8 序列。這是合法的代碼:
type XMLStruct struct { Name string `g1bb3ri$h...T@g` }
所以標(biāo)簽是可以解釋的。標(biāo)準(zhǔn)庫中的包json
需要特定格式的標(biāo)簽 - 它將單個(gè)結(jié)構(gòu)字段映射到單個(gè) JSON 屬性。
如果您想支持單個(gè)字段的多個(gè)屬性 - 人們可以編寫自己的 Marshal/Unmarshal 并按照這種新的標(biāo)記格式進(jìn)行操作。但正如其他一些評論/答案所暗示的那樣,存在處理沖突的困境。

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您在 key:"value" 對中有相同的鍵,則結(jié)構(gòu)標(biāo)記查找將僅使用您指定的第一個(gè)值。
所以,你的結(jié)構(gòu)看起來像
type XMLStruct struct {
? ? Name? ? string? `json:"name"`
? ? Date? ? string? `xml:"Date"`
}
- 4 回答
- 0 關(guān)注
- 180 瀏覽
添加回答
舉報(bào)