Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 无法对值中带有空格的有效负载进行解组_Go_Unmarshalling - Fatal编程技术网

Go 无法对值中带有空格的有效负载进行解组

Go 无法对值中带有空格的有效负载进行解组,go,unmarshalling,Go,Unmarshalling,我正在使用Golang读取XML响应。我无法正确读取带空格的值 以下是要点: 有没有办法让xml.Unmarshal从中修剪值,然后将其视为int 即 1//没有空格,已正确编组。结构中的结果值为1 但是 带有空格的1//被错误地编组为int。result的结构中的结果值为0。 即使在xml“1”中,这也是一个字符串而不是int, 解析器无法将此字符串解析为int。因此0只是默认的int值 如果您将代码更改为: err:= xml.Unmarshal([]byte(payload), &

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

以下是要点:

有没有办法让xml.Unmarshal从
中修剪值,然后将其视为int

1//没有空格,已正确编组。结构中的结果值为1
但是

带有空格的
1//被错误地编组为int。result的结构中的结果值为0。
即使在xml“1”中,这也是一个字符串而不是int, 解析器无法将此字符串解析为int。因此0只是默认的int值

如果您将代码更改为:

err:= xml.Unmarshal([]byte(payload), &mt)
if err != nil {
  fmt.Println(err)
}
您将看到在解析过程中出现错误 如果xml可以使用“1”作为值,我建议在结构中使用字符串。 或者,如果有机会,告诉xml的创建者只使用int而不使用字符串,其中int是预期值

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

如果您将代码更改为:

err:= xml.Unmarshal([]byte(payload), &mt)
if err != nil {
  fmt.Println(err)
}
您将看到在解析过程中出现错误 如果xml可以使用“1”作为值,我建议在结构中使用字符串。
或者,如果有机会,告诉xml的创建者只使用int而不使用字符串,其中int是预期值

感谢您的回复。我将此结构提供给mongodb集合,因此将字段更改为字符串将需要一些腿部工作(这可能还可以)。我可以向XML创建者发送注释,以确保仅在某些字段中使用INT。如果两者都不可能,我想我必须在拆封前检查有效载荷?我希望我可以在一个字段上强制一个Trim()然后是ParseInt()。如果你想修剪xml树中的一个特殊节点,我想你已经编写了你自己的xml解析器,但它只能解析这个特殊的xml。没有别的,更好的解决办法是创建一个代理结构,这个代理结构保存你的xml结构内部,所有的公共字段将只在内部字段上运行。在您的例子中,result字段将把xml结构中的字符串裁剪成一个整数,以获得回复。我将此结构提供给mongodb集合,因此将字段更改为字符串将需要一些腿部工作(这可能还可以)。我可以向XML创建者发送注释,以确保仅在某些字段中使用INT。如果两者都不可能,我想我必须在拆封前检查有效载荷?我希望我可以在一个字段上强制一个Trim()然后是ParseInt()。如果你想修剪xml树中的一个特殊节点,我想你已经编写了你自己的xml解析器,但它只能解析这个特殊的xml。没有别的,更好的解决办法是创建一个代理结构,这个代理结构保存你的xml结构内部,所有的公共字段将只在内部字段上运行。在您的例子中,result字段将把xml struct中的字符串削成int
err:= xml.Unmarshal([]byte(payload), &mt)
if err != nil {
  fmt.Println(err)
}