java - 使用 xstream 反序列化一个 json 数组

标签 java json deserialization xstream

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

但是我如何使用带有 jettison 的 XStream 来做同样的事情呢?

这里是 json:

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

这是我如何尝试解析它的 XStream 代码:

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

我有以下异常:

com.thoughtworks.xstream.converters.ConversionException: id : id

最佳答案

使用数组我无法让它运行,但是使用列表:

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:

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

关于java - 使用 xstream 反序列化一个 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10897016/

相关文章:

java - getPreferenceScreen().findPreference 与 findPreference 之间的区别

java - 格式化日期选择器

javascript - 使用 mvc 访问 jquery ajax 中的对象

java - jackson 奇怪的 XML 反序列化

java - 使用 Gson 2.3.1 反序列化包含在 Java 中不起作用的接口(interface)的 Json 字符串

c# - 使用 JSON.Net CustomCreationConverter

java - 从教程中实现 Android TimePicker - Source Force Closes

java - Java中的日期处理

javascript - 重新加载或刷新 JSON 和 HTML div 加载顺序

json - 使用 VBA 抓取 AJAX 页面