我正在使用JAXB注释来创建我的JSON对象。另外我使用的是Spring 3.2.4。 我遇到的问题是我有一个属性" String anId;"指定为@XmlElement。如果此属性包含类似于" 123.0"的值,则返回给我的结果JSON为:
{"anId":123}
与我想要的相反
{"anId":"123.0"}
.0很有意义,我无法将其舍入/截断。我尝试通过执行以下操作来解决此问题:
@XmlJavaTypeAdapter annotation with an XmlAdapter of <String,String>
adding @XmlSchemaType(name="string")
@XmlElement(name="anId",type=String.class)
然而,这些都没有解决问题。注意:将ID指定为String的原因是因为&#34; 1234&#34;是有效的,&#34; 1234.0&#34;是有效的,&#34; abc123&#34;也是ID的潜在有效值。
考虑到这一点,有没有人知道如何解决我的问题?或者至少可以解释为什么它会使数字四舍五入?
编辑:此外,如果我将值更新为8位数字(12345678.0),则返回字符串&#34; 12345678.0&#34;。另外,如果我将值更新为以.00结尾,则将完整数字作为字符串返回&#34; 123.00&#34;。我不知道这是否有帮助,但是由于舍入不一致,这使我的问题更加困惑。
编辑2:问题似乎是由于我使用Jettison作为JSON转换器。切换到杰克逊解决了这个问题。
答案 0 :(得分:0)
JAXB (JSR-222)规范本身不包含JSON绑定。有:
我假设你属于第三种情况。您看到的行为是因为这些库只接收角色事件。这意味着他们只需获取String
123.0
,并需要选择如何在JSON中呈现它。由于他们没有其他选择,他们使用他们认为最好的JSON格式来渲染它。
最终解决方案需要确认上述哪种情况反映了您的情况。前两个选项将能够解决您的使用案例。
答案 1 :(得分:0)
您是否尝试过使用@XmlAttribute而不是@XmlElement?
另外,您是否使用访问者类型注释了类,即@XmlAccessorType(XmlAccessType.FIELD)?
我倾向于发现使用带有xmlattribute的字段类型我没有问题。