2012-06-05 31 views
9

Gson kullanarak json dizisinin nasıl deserialize edileceğine dair yığın akışında çok fazla bilgi var.xstream kullanarak bir json dizisini deserialize edin

Ancak jettison ile XStream'u kullanarak aynı şeyi nasıl yapabilirim? Ben istisnasız şu var

XStream xstream = new XStream(new JettisonMappedXmlDriver()); 
xstream.alias("entity", Entity[].class); 
return (Entity[])xstream.fromXML(jsonString); 

: Burada

{"entity":[{"id":"1", "name":"aaa"}, {"id":"2", "name":"bbb"}]} 

bunu ayrıştırmak için denemek nasıl XStream kod şudur: Burada

json olduğu

olarak görülebilir
com.thoughtworks.xstream.converters.ConversionException: id : id 
+1

. Gördüğünüz gibi XStream cevap etiketinde 6. kullanıcı olarak sıralıyorum. XStream'i kullanarak düşünebildiğim tüm yolları çözmeye çalıştım ve başarısız oldum. Burada JSON ile çalışmak için başka kütüphaneler listeleniyor: http://stackoverflow.com/questions/5245840/how-to-convert-string-to-jsonobject-in-java. Üzgünüm! – pablosaraiva

+0

Bu çalışmayı başarabildiniz mi? Denediniz mi: 'xstream.alias (" varlık ", Entity.class);' 'xstream.addImplicitCollection (Entity.class," varlık ");' ve bir dizi yerine bir 'List' kullanıyor muydunuz? –

cevap

0

:

Java:

package de.mosst.spielwiese; 

import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 

import org.junit.Test; 

import com.thoughtworks.xstream.XStream; 
import com.thoughtworks.xstream.annotations.XStreamAlias; 
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver; 

import lombok.Data; 

public class XStreamDeserializeJsonWithJettison { 

    @Test 
    @SuppressWarnings("unchecked") 
    public void smokeTest() { 
     InputStream file = XStreamDeserializeJsonWithJettison.class.getResourceAsStream("XStreamDeserializeJsonWithJettison.json"); 
     XStream xStream = new XStream(new JettisonMappedXmlDriver()); 
     xStream.processAnnotations(Entity.class); 

     List<Entity> entities = (List<Entity>) xStream.fromXML(file); 
     System.out.println(entities); 
    } 

    @Data 
    @lombok.AllArgsConstructor 
    @XStreamAlias("entity") 
    class Entity { 
     String id; 
     String name; 
    } 
} 

XML: Çok XStream gibi

{ 
    "list": [ 
     { 
      "entity": [ 
       { 
        "id": 1, 
        "name": "odin" 
       }, 
       { 
        "id": 2, 
        "name": "dwa" 
       } 
      ] 
     } 
    ] 
} 
0

this answer related to root elementXStream orada başarısız olur JSON'da kök öğesi değildir.

Eğer id ve isim (JSON, kesinlikle eleman içine alınmasa gibi) çiftleri için kök eleman bulamadığını belli Java sınıfı XStream için varlık harita kez.

Sadece giriş sarmallarını manipüle eden veya özel dönüştürücü kullanan el tipi sarıcı yardımcı olabilir. dizinin Ben ancak listesiyle birlikte yayınlanmaya alamayan ile

İlgili konular