0

我需要编写一个可以使用 JSON 响应的休息客户端(在 Java 中 - 使用 RestEasy)。关于其余客户端(或包装服务)将 JSON 响应转换为 Java 类型的需要,我看到以下选项: 1. 将响应映射到字符串,然后使用 JsonParser 工具提取数据并手动构建类型。
2. 使用 JAXB 注释的 POJO - 与 jackson 结合 - 自动将 json 响应绑定到对象。

关于 2,定义 XSD 来生成带有 JAXB 注释的 POJO 是否可取/正确?我可以通过 XML 客户端重用来执行此操作。

谢谢。

4

1 回答 1

1

我是#2的粉丝。

原因是您的 JAXB 注释模型对象本质上您尝试在传输级别上表示的业务/域逻辑的合同,并且 POJO 显然为您提供了对 getter/setter 验证的出色控制,并且您可以控制您的元素具有精细粒度的名称和命名空间。

话虽如此,我喜欢有一个额外的“内部” POJO 模型(如有必要,取决于问题复杂性/项目范围),以将传输层与域对象隔离开来。此外,如果您的业务/域对象表示需要在内部进行更改,您会获得一种温暖的感觉,即您没有直接与传输层绑定。一位同事提到了Dozer,这是一个将 bean 映射到 bean 的工具,但我没有直接的经验来进一步评论。

我不喜欢从 XSD 生成代码。代码通常很丑陋或完全不可读;和管理变化,无论多么微妙或微不足道,都会带来意想不到的结果。也许我错了,但我需要在经过验证的模型上进行良好的单元测试。

这是基于我编写面向客户的 SDK 的个人经验,该 SDK 带有一个毛茸茸的 XML-over-HTTP(我们不称之为 REST)API。JAXB/Jackson 注释的 POJO 使其相对轻松。希望有帮助。

于 2013-02-07T04:56:06.610 回答