2012-06-18 45 views
1

我有一些傳入的JSON,我需要映射到一個JAXB對象。我是否需要將JSON轉換爲XML,然後填充JAXB對象,還是可以將JSON直接映射到對象?無論哪種情況,有人能告訴我什麼是做這件事的最好的圖書館嗎?如何將JSON映射到JAX-B對象?

+1

如果您有來自服務提供商的傳入JSON,它們應該已經有一個描述其格式的文件。只要問他們一個XSD或JSON模式。說到JSON-> POJO映射,你可以看看jsonschema2pojo:http://code.google.com/p/jsonschema2pojo/ – toniedzwiedz

回答

0

注:我是EclipseLink JAXB (MOXy)鉛和JAXB (JSR-222)專家小組的成員。

我需要的JSON轉換爲XML,然後填充JAXB 對象,或者我可以直接映射的JSON對象?

在將輸入交給JAXB(JSR-222)實現之前,不需要將JSON轉換爲XML。如果您正在使用Jersey實現(可能還有其他實現),則可以像下面那樣設置JAX-RS方法,JAXB將用於XML和JSON處理。

@GET 
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 
@Path("{id}") 
public Customer read(@PathParam("id") long id) { 
    return entityManager.find(Customer.class, id); 
} 

JAX-RS的實現有一個MessageBodyReader/MessageBodyWriter機制,使您可以覆蓋默認的轉換。我不知道Gson是否支持JAXB註釋。 Jackson是一個對象到JSON庫,提供support for a subset of JAXB annotationsmaybe regrettably)。 EclipseLink MOXy是一個JAXB實現,它的編號爲extended to support JSON-binding。對於在JAX-RS環境中使用它的一個例子中看到:

0

gson是一個靈活的庫,可以將JSON字符串轉換爲等效的Java對象,包括預先存在的Java對象。

0

作爲一個輕量級的方法,你可以使用StAXON - 通過StAX的,https://github.com/beckchr/staxon/ JSON。 StAXON提供對JAXB的支持,請參閱https://github.com/beckchr/staxon/wiki/Using-JAXB

隨着StAXON,結合JAXB註釋模型JSON很簡單,只要

JsonXMLMapper<Person> mapper = new JsonXMLMapper<Person>(Person.class); 
Person person = mapper.readObject(input); 
... 
mapper.writeObject(output, person); 

StAXON還支持JAX-RS,看https://github.com/beckchr/staxon/wiki/Using-JAX-RS