作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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,我得到 pretty-print ,使用 JSON,我永远不会得到 pretty-print :
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 中进行 pretty-print 吗?
在 XStream 文档中没有关于它的信息,他们甚至似乎认为它没问题:
http://x-stream.github.io/json-tutorial.html
但我不敢相信,如果您希望能够序列化和反序列化(JettisonMappedXmlDriver),则无法使用 XStream 获得 pretty-print JSON...
谢谢!
最佳答案
我曾经遇到过类似的问题,但我使用了 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);
}
});
适合你 =)
关于java - JettisonMappedXmlDriver 和 XStream 的 pretty-print ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15021132/
我正在使用 XStream 进行序列化。对于 XML,我使用 StaxDriver,对于 JSON,我使用 JettisonMappedXmlDriver: if (this.format == IS
我是一名优秀的程序员,十分优秀!