【发布时间】:2016-01-08 15:17:27
【问题描述】:
我发现将 xml 内容传输到 json 时可能会丢失一些消息。例如,一个 web 服务传递了一个值“80e5”,它可以正确地显示在 xml 响应中。但是,当我使用 "" 将响应从 xml 传输到 json 时,"80e5" 自动转换为 8000000,从 "STRING" 到 "INTEGER"。
我尝试的ESB版本是4.9.0和4.8.1,我尝试了在线文档中提到的JsonStreamFormatter和JsonFormatter,但没有成功。我想知道是否有节点或者属性可以用来定义节点的类型,因为INTEGER和STRING的不同显示会导致用户解析数据有困难。
【问题讨论】:
-
可以在这里添加 synapse-config 吗?
-
我只是简单地使用属性调解器进行转换。赞
<property name="messageType" value="application/json" scope="axis2"/> -
据我了解,您尝试将
<a>...<m>80e5</m>...</a>类型 xml 转换为 json,如下所示,{a:{...{m:80e5}...}}但 80e5 更改为 800000,它是十进制的吗?如果是这样,您可以尝试的另一种选择是首先通过将 xml 读取到新属性来存储值,然后稍后将其重新分配给 json 正文。 -
是的,那肯定行得通,但困难在于,这个 80e5 值是在一个数组中,结构类似于
<a>....<ID>80e5</ID><ID>30s3</ID>....</a>。我想我找不到 80e5 值在哪里。 -
另外,这个值是后端webservice回复的,这意味着我无法预测这种值会在何时何地出现。