Xstream给出不同的结果

时间:2010-05-20 22:15:18

标签: java json xstream

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

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

 public Book(){
 }
}

这是json:

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

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

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

是否有人遇到此问题并知道解决方案?

1 个答案:

答案 0 :(得分: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属性是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课程声称可以成为某种集合