java - XStream:使用 XStreamImplicit 省略集合

标签 java json list xstream

我正在尝试使用 XStream 将一个小对象图输出到 JSON。仅输出,无需反序列化。

对象很简单:

@XStreamAlias("players")
public class Players {

    @XStreamImplicit
    private List<Player> players = new ArrayList<Player>();

    public Players() {
        for (int i = 0; i < 5; ++i) {
            players.add(new Player("Player " + i));
        }
    }
}

@XStreamAlias("player")
public class Player {
    private String name;
    public Player(String name) {
        this.name = name;
    }
}

幸运的是,JSON 中省略了不必要的列表包装器元素:

{ players: { player: { name: "Player 4"}}}

但不幸的是,只打印了最后一个元素

我正在使用 XStream 1.4.2,像这样初始化:

XStream xstream = new XStream(new JsonHierarchicalStreamDriver());
xstream.setMode(XStream.NO_REFERENCES);
xstream.aliasSystemAttribute(null, "class");
xstream.autodetectAnnotations(true);
String out = xstream.toXML(xstramAliasObject);

据我所知,设置类似于这个问题:XStream Alias of List root elements .

我的例子有什么问题?

提前致谢! 问候,迈克尔

最佳答案

我正在使用相同的库,但收到了完整的消息..

{"players": {
  "player": {
    "name": "Player 0"
  },
  "player": {
    "name": "Player 1"
  },
  "player": {
    "name": "Player 2"
  },
  "player": {
    "name": "Player 3"
  },
  "player": {
    "name": "Player 4"
  }
}}

这是代码..

public static void main(String[] args) {
        Players xstramAliasObject = new Players();
        XStream xstream = new XStream(new JsonHierarchicalStreamDriver());
        xstream.setMode(XStream.NO_REFERENCES);
        xstream.aliasSystemAttribute(null, "class");
        xstream.autodetectAnnotations(true);
        System.out.println("--- "+xstream.toXML(xstramAliasObject));
    }

关于java - XStream:使用 XStreamImplicit 省略集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11340131/

相关文章:

java - 如何获取对象的哪个属性在 JUnit assertEquals 中首先不匹配?

java - 绕过 super() 构造函数的策略/模式

java - JSONObject Java 相当于 Objective C

python - 通过 Django REST API 删除对象

java - 在 Hibernate 映射中将 VARCHAR 转换为整数

java - Java 进程产生了数千个线程……为什么?

javascript - 在纯 JavaScript 中打包/解包通用二进制 JSON

java - 什么样的集合类来获取数组中的位置?

python - 仅使用列表理解重新排列(列表列表)矩阵

java - 使用 Gson 将 JSON 数组解析为 Java 列表