Apache CXF生成Number而不是String

Nab*_*bor 4 java cxf jax-rs

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

<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
    <property name="serializeAsArray" value="true" />
    <property name="arrayKeys" ref="jsonKeys" />
</bean>
Run Code Online (Sandbox Code Playgroud)

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

{object:{"name":"111"}} instead of {object:{"name":111}}
Run Code Online (Sandbox Code Playgroud)

提前致谢...

小智 6

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

<bean id="simpleConverter" class="org.codehaus.jettison.mapped.SimpleConverter"/>

<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.JSONProvider">
    <property name="typeConverter" ref="simpleConverter"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

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