Java JAXB截断长值

Java JAXB截断长值,java,jaxb,truncate,Java,Jaxb,Truncate,我正在使用JAXB将bean转换为JSON。当JAXB转换bean值时​​long类型的被截断 例如: 如果我的long有值:44444 JAXB这样截断它:444450 有人能帮我解决这个问题吗 谢谢注意:我是专家组的负责人和成员 JAXB(JSR-222)规范不包括将对象转换为JSON或从JSON转换对象。您遇到的问题来自利用JAXB元数据的JSON绑定实现。下面我将演示当MOXy用作JSON绑定提供程序时,这个用例可以完美地工作 Java模型(Foo) import javax.xml.b

我正在使用JAXB将bean转换为JSON。当JAXB转换bean值时​​long类型的被截断

例如:

如果我的long有值:44444
JAXB这样截断它:444450

有人能帮我解决这个问题吗


谢谢

注意:我是专家组的负责人和成员

JAXB(JSR-222)规范不包括将对象转换为JSON或从JSON转换对象。您遇到的问题来自利用JAXB元数据的JSON绑定实现。下面我将演示当MOXy用作JSON绑定提供程序时,这个用例可以完美地工作

Java模型(Foo)

import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
公开课Foo{
私人长条酒吧;
}
jaxb.properties

要将MOXy指定为JAXB提供程序,您需要在与域模型相同的包中包含一个名为
JAXB.properties
的文件,其中包含以下条目(请参阅:)

演示

import java.util.*;
导入javax.xml.bind.*;
导入javax.xml.transform.stream.StreamSource;
导入org.eclipse.persistence.jaxb.JAXBContextProperties;
公开课演示{
公共静态void main(字符串[]args)引发异常{
映射属性=新的HashMap(2);
put(JAXBContextProperties.MEDIA_类型,“application/json”);
put(JAXBContextProperties.JSON_INCLUDE_ROOT,false);
JAXBContext jc=JAXBContext.newInstance(新类[]{Foo.Class},属性);
Unmarshaller Unmarshaller=jc.createUnmarshaller();
StreamSource json=新的StreamSource(“src/forum16821525/input.json”);
Foo-Foo=unmarshaller.unmarshal(json,Foo.class).getValue();
Marshaller=jc.createMarshaller();
setProperty(marshaller.JAXB_格式化的_输出,true);
marshaller.marshall(foo,System.out);
}
}
input.xml/Output

{
   "bar" : 44444444444444444
}

好的,我看不到配置的链接,有一个代理在工作,阻止我访问。我想创建一个拦截器来将长值转换为字符串?我想问题也会解决的,对吗?@user2433783-你不需要这样做。您在什么环境中运行?您使用什么作为JSON绑定提供程序?我使用的是默认的libs服务器Jboss 7.1,项目的一个要求是除了默认的lib之外不使用任何lib。@user2433783-我理解这一点。但是我怀疑您的JSON绑定提供程序不是基于JAXB的(因为JAXB impls没有这个bug),所以基于JAXB的解决方案可能不适合您。真糟糕,我正在阅读RESTEasy文档,他们说JAX-B的实现是默认的。我尝试使用拦截器,但不使用JSON,只使用XML。有什么建议吗?
{
   "bar" : 44444444444444444
}