【问题标题】:JettisonMappedXmlDriver and pretty print with XStreamJettisonMappedXmlDriver 和 XStream 的漂亮打印
【发布时间】:2013-02-07 21:23:01
【问题描述】:

我正在使用 XStream 进行序列化。对于 XML,我使用 StaxDriver,对于 JSON,我使用 JettisonMappedXmlDriver:

if (this.format == ISerializer.Format.JSON){
    logger.info("json");
    /* note: JsonHierarchicalStreamDriver can read Json only */
    this.xstream = new XStream(new JettisonMappedXmlDriver());
}
else if (this.format == ISerializer.Format.XML){
    logger.info("xml");
    this.xstream = new XStream(new StaxDriver());
}

使用 XML 我得到了漂亮的打印,使用 JSON,我从来没有得到漂亮的打印:

public boolean toStream(Object object, Writer writer){
        if(this.usePrettyPrint == true){
        this.xstream.marshal(object, new PrettyPrintWriter(writer));
    }else{
            this.xstream.toXML(object, writer);
    }
    return true;
}

如果我以这种方式保留我的代码,我将获得 XML 而不是 JSON,我必须以这种方式重写我的代码才能获得 JSON,但打印效果不佳:

public boolean toStream(Object object, Writer writer){
    if (this.format == ISerializer.Format.JSON){
        this.xstream.toXML(object, writer);
    }
    else{
        if(this.usePrettyPrint == true){
            this.xstream.marshal(object, new PrettyPrintWriter(writer));
        }else{
            this.xstream.toXML(object, writer);
        }
    }
    return true;
}

您知道使用 JettisonMappedXmlDriver 以 JSON 格式进行漂亮打印的方法吗?

在 XStream 文档中没有关于它的信息,他们甚至认为它还可以:

http://x-stream.github.io/json-tutorial.html

但如果您希望能够序列化和反序列化 (JettisonMappedXmlDriver),我无法相信无法使用 XStream 获得漂亮打印的 JSON...

谢谢!

【问题讨论】:

    标签: java json serialization xstream jettison


    【解决方案1】:

    我曾经遇到过类似的问题,但我使用了 JsonHierarchicalStreamDriver,我的解决方案是

    this.xstream = new XStream(new JsonHierarchicalStreamDriver () {
        public HierarchicalStreamWriter createWriter(Writer writer) {
            return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
        }
    });
    

    也许

    this.xstream = new XStream(new JettisonMappedXmlDriver() {
        public HierarchicalStreamWriter createWriter(Writer writer) {
            return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
        }
    });
    

    为你工作 =)

    【讨论】:

    • 您好 Wolfi,谢谢您的回答,它并没有真正起作用,现在我正在使用 GSON...
    猜你喜欢
    • 2012-05-11
    • 2021-06-22
    • 1970-01-01
    • 2016-07-07
    • 2014-05-19
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2014-08-13
    相关资源
    最近更新 更多