Apache CXF生成Number而不是String

如果字符串看起来像一个数字,例如。 111 CXF不会将其作为字符串返回,而是作为数字返回。

    

可以看出,我使用的是JSON提供程序。 如何强制它,提供正确的JSON字符串?

 {object:{"name":"111"}} instead of {object:{"name":111}} 

提前致谢…

您可以将SimpleConverter添加到JSONProvider,以便它不会将字符串转换为数字。 默认情况下,它使用DefaultConverter。 但请确保相关bean为该字段的类型字符串。

     

您可以在Jettison中找到有关此缺陷的更多信息http://jira.codehaus.org/browse/JETTISON-61 http://jira.codehaus.org/browse/JETTISON-36

编辑:这似乎是Jettison中的一个错误。 org.apache.cxf.jaxrs.provider.json.JSONProvider使用Jettison导致了这个问题。 如果您使用jackson提供商 ,则此问题不再存在。

将以下内容添加到jaxrs:server下的beans.xml中。

     

而且,以下直接作为root的孩子。

   

根据JSON规范 ,允许使用数字作为值。 摘录说,

2.1。 值

JSON值必须是对象,数组, 数字或字符串,或以下三个文字名称之一:

  false null true 

这是规范中提到的一个例子。

  { "Image": { "Width": 800, "Height": 600, "Title": "View from 15th Floor", "Thumbnail": { "Url": "http://www.example.com/image/481989943", "Height": 125, "Width": "100" }, "IDs": [116, 943, 234, 38793] } } 

如果你真的想要一个String,那么你可能会查看你的资源类和相关的bean类,以确保字段类型是正确的!