我们从 SOAP 服务中的 WSDL/XSD 生成 POJO。我们如何在使用 RESTful Web 服务时生成 POJO?
最佳答案
由于您没有用于该服务的 WSDL 或 WADL(一种相对常见的情况),您将不得不以艰难的方式完成此任务。
如果服务采用 XML,一种可能的方法是编写 XSD 来描述它采用和返回的文档。如果您以前编写过 XSD 并且您使用的编辑器旨在协助此类操作(我使用的是 Eclipse 中的编辑器,但还有许多其他编辑器),那么这并不难。否则,只需自己编写 POJO。我建议保持这样的 POJO 非常简单,可能根本没有方法,只有公共(public)字段和注释。需要注意的主要注释是:
@XmlRootElement
— 这些命名元素将形成消息的外部,向任一方向传播。去上课。@XmlElement
— 将映射字段标记为消息的子元素。@XmlAttribute
— 将映射字段标记为属性。@XmlType
— 将类标记为适合用作另一条消息的复合元素的类型。
还有很多,但最好的办法是编写一些 POJO 并尝试使用它们:
@XmlRootElement
public class Example {
@XmlAttribute
public String pqr;
@XmlElement
public String abc;
@XmlElement
public List<String> def = new ArrayList<String>();
}
Example example = new Example();
example.abc = "oscar";
example.def.add("bert");
example.def.add("ernie");
// Omitting the attribute; null maps to absence/optionality
JAXBContext c = JAXBContext.newInstance(Example.class);
Marshaller m = c.createMarshaller();
m.marshal(example, System.out);
相反的方向是解码(当然是使用 JAXB Unmarshaller
)并且非常相似。
要使用 JSON 而不是 XML,请使用 Jettison 库 as outlined in this blog post . (本质上,您只是在 JSON 和 JAXB 之间放置了一个特殊的 DOM 树写入器/读取器。)
关于java - 为 RESTful Web 服务生成 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21201946/