登录
首页 >  Golang >  Go问答

如果与结构体的 XMLName 不同,则设置字段名称

来源:stackoverflow

时间:2024-04-17 16:00:37 154浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《如果与结构体的 XMLName 不同,则设置字段名称》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

gowsdl 基于 netsuite suitetalk web 服务定义生成的一组类型:


   
       
          
       
    
 
 
    
       
       
       
       
       
       
    

它创建了以下类型:

type TokenPassportSignature struct {
    XMLName xml.Name `xml:"urn:core_2018_2.platform.webservices.netsuite.com TokenPassportSignature"`
    Value string
    Algorithm string `xml:"algorithm,attr,omitempty"`
}

type TokenPassport struct {
    XMLName xml.Name `xml:"urn:core_2018_2.platform.webservices.netsuite.com TokenPassport"`
    Account string `xml:"account,omitempty"`
    ConsumerKey string `xml:"consumerKey,omitempty"`
    Token string `xml:"token,omitempty"`
    Nonce string `xml:"nonce,omitempty"`
    Timestamp int64 `xml:"timestamp,omitempty"`
    Signature *TokenPassportSignature `xml:"signature,omitempty"`
}

当我尝试通过客户端处理它时,xml 编码过程不喜欢签名字段具有冲突的名称。

xml:main.tokenpassport.signature 标记中的名称“signature”与 *main.tokenpassportsignature.xmlname 中的名称“tokenpassportsignature”冲突

我已将相关位提取到 go 演示中,以确认这是抛出错误的编码器。根据 marhsal 的文档,该字段似乎必须匹配:

如果结构体字段的 xml 名称由字段标记定义 和结构体的 xmlname 字段,名称必须匹配。

对如何进行有什么想法吗?


解决方案


或者,人们可能更愿意保留嵌入结构 tokenpassportsignature 的名称,而不是名称 signature。 如果对字段进行命名,则该行变为:

Signature *TokenPassportSignature `xml:",omitempty"`

Code adapted

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>