2010-04-20 5 views
0

Quand j'utiliseproblème avec XStream Marshalling pour revenir xml et JSON

new XStream().toXml(someObject); 

il retourne suivant xml ...

<response> 
     <status>SUCCESS</status> 
     <isOwnershipVerified class="boolean">false</isOwnershipVerified> 
</response> 

et, quand je l'utilise

new XStream(new JsonHierarchicalStreamDriver()).toXml(someObject); 

retourne suivant json ...

{"response": { 
    "status": "SUCCESS", 
    "isOwnershipVerified": { 
    "@class": "boolean""false"} 
}} 

Maintenant, puisque je veux complètement se débarrasser de l'attribut de classe (lisez-le pour ne pas l'alias avec quoi que ce soit d'autre, mais pour le supprimer) j'utilise le code suivant.

XStream xStream = new XStream(); 
    StringWriter writer = new StringWriter(); 
    xStream.marshal(this, new PrettyPrintWriter(writer) { 
     @Override 
     public void addAttribute(final String key, final String value) 
     { 
      if (!key.equals("class")) 
      { 
       super.addAttribute(key, value); 
      } 
     } 
    }); 
    return writer.toString(); 

qui donne follwing xml ...

<response> 
     <status>SUCCESS</status> 
     <isOwnershipVerified>false</isOwnershipVerified> 
</response> 

mais, quand je passe nouveau JsonHierarchicalStreamDriver() alors que la création d'objets xStream ci-dessus, il ne revient pas JSON. il renvoie le même xml montré ci-dessus.

Qu'est-ce qui ne va pas ici?

Merci à l'avance ...

Répondre

0

i figured it out ...

au lieu d'utiliser

new PrettyPrintWriter(writer) ... 

utilisation

new JsonHierarchicalStreamWriter(writer) 

et les choses vont commencer à travailler attendu ...: D