Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用xstream反序列化json数组_Java_Json_Deserialization_Xstream - Fatal编程技术网

Java 使用xstream反序列化json数组

Java 使用xstream反序列化json数组,java,json,deserialization,xstream,Java,Json,Deserialization,Xstream,stackoverflow上有很多关于如何使用Gson反序列化json数组的信息 但是,如何使用带有抛弃功能的XStream 以下是json: {"entity":[{"id":"1", "name":"aaa"}, {"id":"2", "name":"bbb"}]} 下面是我如何解析它的XStreamcode代码: XStream xstream = new XStream(new JettisonMappedXmlDriver()); xstream.alias("entity", En

stackoverflow上有很多关于如何使用Gson反序列化json数组的信息

但是,如何使用带有抛弃功能的
XStream

以下是json:

{"entity":[{"id":"1", "name":"aaa"}, {"id":"2", "name":"bbb"}]}
下面是我如何解析它的
XStream
code代码:

XStream xstream = new XStream(new JettisonMappedXmlDriver());
xstream.alias("entity", Entity[].class);
return (Entity[])xstream.fromXML(jsonString);
我有以下例外:

com.thoughtworks.xstream.converters.ConversionException: id : id
XStream中可以看出,当JSON中没有根元素时,会失败

一旦将实体映射到某个Java类,XStream就找不到id和名称对的根元素(就像在JSON中一样,它们不包含在元素中)


只有手工制作的包装器、操作输入流或使用自定义转换器才能在这里提供帮助。

对于array,我无法让它运行,但有一个列表:

爪哇:


我非常喜欢XStream。您可以看到我在XStream应答标签中排名第六。我尝试用我能想到的所有方法用XStream解决您的问题,但我失败了。这里有另一个线程列出了使用JSON的其他库:。我很抱歉!你能让它工作吗?您是否尝试过:
xstream.alias(“entity”,entity.class)与xstream.addImplicitCollection(Entity.class,“Entity”)并使用
列表
而不是数组?
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;
    }
}
{
    "list": [
        {
            "entity": [
                {
                    "id": 1,
                    "name": "odin"
                },
                {
                    "id": 2,
                    "name": "dwa"
                }
            ]
        }
    ]
}