我正在使用一个返回 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
有人可以帮我弄清楚发生了什么以及如何解决它吗?