Xstream提供不同的结果

问题描述 投票:0回答:1

我们将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"
  }
}

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

java json xstream
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"]}}

您确定这是上面列出的Book对象返回的xstream吗?这似乎不对,因为subject属性是String而不是String[]或其他类型的集合。您提供的第一个示例(无作者的书)的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类正在声明subject为某种集合

© www.soinside.com 2019 - 2024. All rights reserved.