1

我有一些传入的 JSON 需要映射到 JAXB 对象。我需要将 JSON 转换为 XML,然后填充 JAXB 对象,还是可以将 JSON 直接映射到对象?无论哪种情况,有人可以告诉我这样做的最佳库是什么?

4

4 回答 4

0

gson是一个灵活的库,可以将 JSON 字符串转换为等效的 Java 对象,包括预先存在的 Java 对象。

于 2012-06-18T16:44:10.503 回答
0

如果您使用的是 Jackson,您可以在此处查看 JacksonJAXBAnnotations http://wiki.fasterxml.com/JacksonJAXBAnnotations

于 2012-06-18T17:29:55.160 回答
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 是一个 object-to-JSON 库,它提供对 JAXB 注释子集的支持可能令人遗憾)。EclipseLink MOXy 是一个 JAXB 实现,已扩展为支持 JSON 绑定。有关在 JAX-RS 环境中使用它的示例,请参阅:

于 2012-06-18T18:25:43.217 回答
0

作为一种轻量级方法,您可以通过 StAX 使用 StAXON - JSON,https://github.com/beckchr/staxon/。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

于 2012-06-19T08:46:48.093 回答