2

基本上,我想要一个接口来将对象转换为/从它们的 XML 或 JSON 字符串表示,比如

public interface IStringifier{

/**
   Converts the Object to it's String representation, e.g. XML or JSON
*/
   public String toString(Object o);

/**
   Converts from the String representation (e.g. XML or JSON) to an Object
*/
   public Object fromString(String s, Class<?> clazz);
}

这样的接口在 GSON、XStream 等中实现起来相当简单,但是通过抽象它,您将无法知道底层发生了什么。而且您与众多 XML 或 JSON 库之一分离,因此客户可以更自由地选择自己喜欢的库。

是否有任何“标准”Java接口?Guava,Apache等中的东西?


(添加)没有一个答案是我真正想要的(“是的,在 javax.obscure.interfaces 中有你想要的”)但感谢您的回复。我会接受汤姆的回答作为最有信息/最具挑衅性的回答。也许我会清理我拥有的代码并尝试创建一个标准。:-)

4

4 回答 4

3

JAXB (JSR-222)是用于将对象转换为 XML 或从 XML 转换的 Java SE/EE 标准。它可以独立使用,是 JAX-WS (SOAP) 和 JAX-RS (RESTful) Web 服务的标准绑定层。jaxb.properties下面是通过文件指定备用提供者的示例的链接

目前没有用于 JSON 绑定的标准 API。

于 2012-12-11T00:28:31.317 回答
1

XML 和 JSON 无关,所以这实际上是两个问题:

对于 JSON,虽然是“非官方的”,但一个流行的库是GSON

对于 XML,请参阅Blaise 的回答

于 2012-12-11T00:42:28.027 回答
1

我觉得你想多了。您实际上并不关心将对象转换为Strings,您希望能够在不知道该格式是什么的情况下将对象序列化为不同的格式。但是谁说不同的格式是字符串呢?当您希望您的对象可用作协议缓冲区时会发生什么?那是二进制格式,而不是字符格式——所以stringify()在那里无济于事。最终,由您来构建您的应用程序,使其尽可能独立于这些细节。

于 2012-12-11T00:48:40.720 回答
0

一种流行的 JSON-to-Java 绑定库是Jackson 一种流行的 XML-to-Java 绑定库是XStream

如果您打算在 Web 应用程序中使用它,也许您想考虑Spring 3 MVC的设施。通过注释,它会自动进行转换,您可以告诉它您需要 XML 还是 JSON(或各种其他格式)。这也可能是您正在寻找的通用界面。

于 2012-12-11T01:07:14.487 回答