我试图看看,在2014年,我们是在一个通过休息服务返回JSON或XML文档的地方,例如,JAX-RS spring实现在另一个库可能用另一种语言使用时会兼容吗?如果我编写一个使用Java JAX-RS api的Windows移动.net客户端,那么JAX-RS将如何在.net客户端中正确地返回json(和/或xml)转换?或者各种语言和库存在问题吗?
我问这个是因为特别是在一个案例中,我们返回一个项集合,并且在XML中它将导致这个:
<items>
<item attr="value">another value</item>
<item attr="value2">another value2</item>
</items>
生成的JSON类似于:
"items": [
{"attr":"value","value":"another value"},
{"attr":"value2", "value":"another value2"}
]
然而,在使用在线xml到json和json到xml ..当我粘贴上面的XML并获得上面的json转换..然后通过上面的json进入json到xml转换器.. xml是不同的..它变成了:
<items>
<item>
<element attr="value">another value</element>
<element attr="value2">another value2</element>
</item>
</items>
我担心的是在我们的服务端代码上..我们使用一个库来获取传入的xml或json并将其转换为一个对象。如果由于某些客户端编组而发送上述XML,那么我们的服务器端将抛出异常......无法处理该类型。
在某些情况下,我还会看到将xml属性转换为“@attrName”的JSON:“value”。
那么..有没有办法确保我们返回的json和xml是“正确的”并且可以被任何客户端读取/解析?我们应该记录一些关于返回的json的类型的内容,这将提供有关如何正确配置不同库以确保从数据封送相同json的提示吗?我在Eclipse Moxy中看到了一些可以设置的配置。
在我过去,我只是简单地使用Jersey和JAX-RS,它为我处理了json和xml ..我从来没有想过像我的JAX-RS发送到不兼容的东西的不同的消费者库这样的问题,特别是在例如,他们使用我们的XSD在他们选择的语言/库中生成POJO,这可能与我们的XSD到POJO生成的内容不匹配。