我们将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"
}
}
有人遇到这个问题并且知道解决方案吗?
首先,您上面的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为某种集合