【问题标题】:java XML equivalent to flexjson.JSONDeserializer and flexjson.JSONSerializerjava XML 等效于 flexjson.JSONDeserializer 和 flexjson.JSONSerializer
【发布时间】:2012-12-06 21:30:07
【问题描述】:

我有一些使用 flexjson.JSONDeserializer 和 flexjson.JSONSerializer 的 Java 代码。 (简单来说,JSONDeserializer 使用 JSON 字符串中的属性值对创建一个类实例,而 JSONSerializer 接受一个类实例并创建一个 JSON 字符串。)

现在我还需要为 XML 使用类似的东西,最好的匹配是什么?有没有类似但性能更好的东西?

简单例子

class X {
    private Integer a;
    public void setA(Integer a);
    public Integer getA(); 
}

with json equal to {"a":1} I have the following
new JSONDeserializer<X>().use(null, X.class).deserialize(json);

with json equal to [{"a":1},{"a":2}]
new JSONDeserializer<List<X>>().use(null, ArrayList.class).use("values", X.class).deserialize(json);

【问题讨论】:

    标签: java xml json


    【解决方案1】:

    为了对 Java 对象与 XML 进行“哑”序列化/反序列化,最好的办法是使用 javax.xml.bind.JAXB 类的静态方法。 marshal()unmarshal() 方法应该提供与您使用 flexjson 的功能类似的功能。但是,我不能谈论性能。

    【讨论】:

    • 谢谢。您引用的页面说“性能不一定是最佳的”
    【解决方案2】:

    编辑 Comparision of XStream and JAXB here 我仍然需要再次比较它们。 结束编辑

    XStream 似乎比 JAXB 选项更容易,因为我也在处理 X 的集合

    序列化代码很简单

    return new XStream().toXML(collection);
    

    Maven 依赖是

    <dependency>
        <groupId>com.thoughtworks.xstream</groupId>
        <artifactId>xstream</artifactId>
        <version>1.4.3</version>
    </dependency>
    <dependency>
        <groupId>xmlpull</groupId>
        <artifactId>xmlpull</artifactId>
        <version>1.1.3.1</version>
    </dependency>
    

    在你的java文件中添加

    import com.thoughtworks.xstream.XStream;
    

    【讨论】:

      猜你喜欢
      • 2012-05-29
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多