2
我正在使用JAXB將bean轉換爲JSON。當JAXB轉換類型的bean值時,被截斷。JAXB截斷長整型值
例子:
如果我長的數值:44444444444444444
JAXB截斷這樣的:44444444444444450
誰能幫我解決這個問題呢?
感謝
我正在使用JAXB將bean轉換爲JSON。當JAXB轉換類型的bean值時,被截斷。JAXB截斷長整型值
例子:
如果我長的數值:44444444444444444
JAXB截斷這樣的:44444444444444450
誰能幫我解決這個問題呢?
感謝
注:我是EclipseLink JAXB (MOXy)鉛和JAXB (JSR-222)專家小組的成員。
JAXB(JSR-222)規範不包括將對象轉換爲JSON或從JSON轉換對象。您遇到的問題來自於利用JAXB元數據的JSON綁定實現。下面我將演示當MOXy用作JSON綁定提供程序時,此用例可以很好地工作。
Java模型(美孚)
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
public class Foo {
private long bar;
}
jaxb.properties
要指定莫西爲您的JAXB提供者,你需要包括在同一個包稱爲jaxb.properties
爲您的域模型文件與以下條目(請參閱:http://blog.bdoughan.com/2011/05/specifying-eclipselink-moxy-as-your.html)。
javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
演示
import java.util.*;
import javax.xml.bind.*;
import javax.xml.transform.stream.StreamSource;
import org.eclipse.persistence.jaxb.JAXBContextProperties;
public class Demo {
public static void main(String[] args) throws Exception {
Map<String, Object> properties = new HashMap<String, Object>(2);
properties.put(JAXBContextProperties.MEDIA_TYPE, "application/json");
properties.put(JAXBContextProperties.JSON_INCLUDE_ROOT, false);
JAXBContext jc = JAXBContext.newInstance(new Class[] {Foo.class}, properties);
Unmarshaller unmarshaller = jc.createUnmarshaller();
StreamSource json = new StreamSource("src/forum16821525/input.json");
Foo foo = unmarshaller.unmarshal(json, Foo.class).getValue();
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(foo, System.out);
}
}
的input.xml /輸出
{
"bar" : 44444444444444444
}
那好吧,我看不到與配置的聯繫,有工作的代理阻止我從訪問。 我想創建一個攔截器來將long值轉換爲一個String? 我想這樣的問題也解決了,對嗎? –
@ user2433783 - 你不需要那樣做。你在運行什麼環境?你用什麼作爲JSON綁定提供者? –
我使用默認的libs服務器Jboss 7.1,項目的其中一個要求是使用默認值以外的任何lib。 –