Xstream дает разные результаты - PullRequest
0 голосов
/ 21 мая 2010

Мы используем XStream для наших остальных услуг. Тем не менее, Xstream дает нам различные результаты для полей с одинаковыми значениями. предположим, что книга объект:

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 голосов
/ 21 мая 2010

Во-первых, ваш экземпляр 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 класс объявляет предмет некоторой коллекции

...