go - 无法解码值中包含空格的负载

标签 go unmarshalling

我正在使用 Golang 读取 XML 响应。我无法正确读取带空格的值。

这是一个要点:https://gist.github.com/anonymous/5825288

有没有办法让 xml.Unmarshal 修剪 <result> 中的值?然后把它当作一个整数?

<result>1<result> // no spaces, is marshalled correctly.  The resulting value in the struct is 1

但是

<result> 1 </result>  // with spaces, is marshalled incorrectly as an int.  The resulting value in the struct for result is 0.

最佳答案

即使在 xml 中,“1”也是一个字符串而不是一个 int, 解析器无法将此字符串解析为 int。所以 0 只是默认的 int 值,

如果您将代码更改为:

err:= xml.Unmarshal([]byte(payload), &mt)
if err != nil {
  fmt.Println(err)
}

你会看到解析的时候出错了 如果您的 xml 可以将“1 ”作为值,我建议在您的结构中使用一个字符串。 或者,如果有机会,告诉 xml 的创建者只使用 int 而不是字符串,其中需要 int

关于go - 无法解码值中包含空格的负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17222478/

相关文章:

java解码à的错误转换

java - 如何将数据库 XML 输出映射到 JAXB 派生对象模型

java - 解码数组不会给我任何值

xml - Go:XML Unmarshal 嵌套键值对

go - 如何将变量作为 shell 脚本文件运行

go - Golang 上传文件的 Mime 类型检查

html - 使用go模板解析页面中显示为纯文本的HTML代码

java - 使用 JAXB 解码 xml - 带有 XmlType 和 proporder 的命名空间

java - 如何在 Go 中使用/实现切面方向?

go - 我有一张用户表。我想编写一个 API 来使用 id 获取数据。我不断收到以下错误。请注意,数据库已经满了