Jettison和JAXB自动更改JSON响应中的数据类型

时间:2011-01-20 21:55:43

标签: java json jaxb resteasy jettison

我正在使用Resteasy 2.0.1.GA和Resteasy-jettison-provider-1.2.GA和JAXB annontations,每当我有一个包含所有数字的String属性(即String groupName="1111";)时,JSON响应将会通过删除双引号将其显示为数字。如果我将其更改为String groupName="oneoneoneoneone";,则JSON响应会将其视为Sting并在响应中保留双引号。有没有让Jettison提供商严格按照其类型而非价值来解释数据?

2 个答案:

答案 0 :(得分:4)

这似乎是Jettison隐含的“特征”;它试图反省实际数据,并找出最适合的类型。我之前遇到过这种情况,令人气愤。

我强烈建议完全抛弃Jettison,而是使用RestEasy Jackson supportJackson是一个质量更好的图书馆,不会受到这些“有用”功能的影响。它也像Jettison一样supports JAXB annotations

答案 1 :(得分:0)

让listner在服务器启动时设置以下系统属性。

System.setProperty("jettison.mapped.typeconverter.class"
                  ,"org.codehaus.jettison.mapped.SimpleConverter");

一旦属性设置为simpleConverter,则jettison将值始终作为字符串输出,无论数据类型是字符串还是int都无关紧要。