为了账号安全,请及时绑定邮箱和手机立即绑定

使用指针时,omitempty 在编码/xml 中不起作用?

使用指针时,omitempty 在编码/xml 中不起作用?

Go
忽然笑 2021-06-22 21:22:07
我正在使用一个返回 XML 的 REST API,我正在尝试解组 XML,但遇到了似乎omitempty无法正常工作的问题。这是一个工作 XML 文件的示例:<?xml version='1.0' encoding='UTF-8'?><customer uri="/api/customers/339/" id="339">    <name>        <first>Firstname</first>        <last>Lastname</last>    </name>    <email>myemail@example.com</email>    <billing>        <address>            <address1>123 Main St.</address123>            <address2></address2>            <city>Nowhere</city>            <state>IA</state>            <country>USA</country>            <zip>12345</zip>        </address>    </billing></customer>这是一个“坏”记录的例子<?xml version='1.0' encoding='UTF-8'?><customer uri="/api/customers/6848/" id="6848">    <name>        <first>Firstname</first>        <last>Lastname</last>    </name>    <email/>    <billing/></customer>现在我的结构设置如下: type Customer struct {     ID      int      `xml:"id,attr"`     Name    *Name    `xml:"name,omitempty"`     Billing *Billing `xml:"billing,omitempty"` } type Billing struct {     Address *Address `xml:"address,omitempty"` } type Address struct {     address_1 string `xml:",omitempty"`     address_2 string `xml:",omitempty"`     city      string `xml:",omitempty"`     postal    string `xml:",omitempty"`     country   string `xml:",omitempty"` } type Name struct {     first, last string }当 XML 遵循第一个示例的模式时,它可以读取所有记录,<billing></billing>但是当它遇到类似的记录时<billing/>会引发以下错误:panic: runtime error: invalid memory address or nil pointer dereference有人可以帮我弄清楚发生了什么以及如何解决吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信