2013-02-22 3 views
1

Я делаю сериализацию с XStream. Для XML я использую StaxDriver и JSON Я использую JettisonMappedXmlDriver:JettisonMappedXmlDriver и довольно печатать с XStream

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; 
} 

вы знаете способ получить красивую печать в формате JSON с JettisonMappedXmlD река?

В документации XStream нет информации об этом, они даже показаться, чтобы найти его OK:

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

, но я не могу поверить, что нет никакого способа, чтобы получить довольно печататься JSON с помощью XStream если вы хотел бы иметь возможность сериализации и десериализации (JettisonMappedXmlDriver) ...

Спасибо!

ответ

0

я когда-то была аналогичная проблема, но я использовал 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); 
    } 
}); 

работает для вас =)

+0

Привет Wolfi, спасибо за ваш ответ , он не работает, и теперь я использую GSON ... – Rafa

Смежные вопросы