0

我们将 XStream 用于我们的宁静服务。但是,对于具有相同值的字段,Xstream 为我们提供了不同的结果。假设它是 Book 对象:

public class Book {
 public String name "myName";
 public List <String> authors = new List <String> ();
 public String subject "mySubject";

 public Book() {}
}

为此的json是:

{
  "Book": {
    "name": "myName",
    "authors": "",
    "subject": ["mySubject"]
  }
}

但是,如果我将作者添加到集合中,我会得到不同的结果。

{
  "Book": {
    "name": "myName",
    "authors": ["author1", "author2", "author3"],
    "subject": "mySubject"
  }
}

有没有人遇到这个问题并知道解决方案?

4

1 回答 1

0

首先,您上面的 Book 实例包含错误。这是我认为它应该看起来的样子:

public class Book{
    public String name = "myName";
    public List authors = new ArrayList();
    public String subject = "mySubject";

    public Book(){
    }
}

现在:

{"Book":{"name":"myName", "authors":"", "subject":["mySubject"]}}

您确定这是 xstream 为Book上面列出的对象返回的内容吗?这似乎不对,因为该subject属性是 aString而不是 aString[]或其他类型的集合。您给出的第一个示例(没有作者的书)的 JSON 编码应该是:

{"Book":{"name":"myName", "authors":"", "subject":"mySubject"}}

除非你Book看起来像这样:

public class Book{
    public String name = "myName";
    public List authors = new List();
    public String[] subject = {"mySubject"};

    public Book(){
    }
}

底线:确保您没有将您的主题声明为集合。

作为奖励提示,尝试在您的问题上发布工作代码。这样更容易获得有意义的答案。所以我的猜测是你的Book班级正在声明主题是某种集合

于 2010-05-20T22:29:27.060 回答