首页 > 文章列表 > 不支持的类型结构对于 xml.Unmarshal()

不支持的类型结构对于 xml.Unmarshal()

332 2024-04-07
问题内容

我收到一个错误,无法对运行时使用 reflect 创建的结构进行 xml.marshal。

它给了我以下错误:

xml: unsupported type: struct { ... }

这是我的 go-playground 链接。

有人知道为什么这不起作用吗?

我在实施过程中缺少什么?

它适用于 json 和 yaml。


正确答案


https://pkg.go.dev/encoding/[电子邮件受保护]#Marshal

XML 元素的名称按优先顺序取自:

  • XMLName 字段上的标记(如果数据是结构体)
  • Name 类型的 XMLName 字段的值
  • 用于获取数据的struct字段的标签
  • 用于获取数据的结构体字段的名称
  • 封送类型的名称

您的结构未命名并且没有XMLName字段,因此XML封送拆收器无法解析根元素的名称。如果将 Person xml.Name 字段重命名为 XMLName 那么序列化程序就可以工作。

https://go.dev/play/p/gRH3Y-PUxl8