【问题标题】:Single element array bug in XStreamXStream 中的单元素数组错误
【发布时间】:2026-02-03 02:50:01
【问题描述】:

如果你有这样的功能:

List<User> getUsers() {}

如果 getUsers 返回一个只有一个元素的 List,则生成的 JSON 只是一个 JSON 对象而不是 JSON 数组。

无论函数是否返回单个数组列表,是否有一种解决方法可以使 XStream 返回 JSON 数组?

【问题讨论】:

  • 试试XStream.addImplicitCollection()或者XStream.addDefaultImplementation()

标签: java json xstream


【解决方案1】:

解决方案是降级到 Jettison 1.2

    <dependency>
        <groupId>org.restlet.jee</groupId>
        <artifactId>org.restlet.ext.xstream</artifactId>
        <version>${version.restlet}</version>
        <exclusions>
            <exclusion>
                <groupId>org.codehaus.jettison</groupId>
                <artifactId>jettison</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.thoughtworks.xstream</groupId>
                <artifactId>xstream</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.restlet.jee</groupId>
        <artifactId>org.restlet.ext.json</artifactId>
        <version>${version.restlet}</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jettison</groupId>
        <artifactId>jettison</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>com.thoughtworks.xstream</groupId>
        <artifactId>xstream</artifactId>
        <version>1.4.11.1</version>
    </dependency>

根据 XStream 数组错误 https://github.com/jettison-json/jettison/issues/12

【讨论】: