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

我正在使用一个返回 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


有人可以帮我弄清楚发生了什么以及如何解决吗?


忽然笑
浏览 200回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go