Массив GSON в json, но сопоставленный массив - PullRequest
0 голосов
/ 02 марта 2012

Я использую библиотеку Gson в Java для сериализации java-объектов в jSon и наоборот.

В большинстве случаев это работает довольно хорошо ... но поскольку я хочу получить доступ к своим коллекциям в javascript как сопоставленные массивы, мне нужно отправлять их как свойства, а не как массивы json.

Например,давайте предположим, что у меня есть группа, в которой есть несколько человек ... если я отправлю ее:

var groups={"group1":[{"john":{"age":22,"sex":"male"}},{"patricia":{"age":32,"sex":"female"}}]}

Я не могу делать группы ["group1"] ["john"] ... и яМне придется перебирать массив, чтобы найти правильного человека.

Но если я сделаю:

var groups={"group1":{"john":{"age":22,"sex":"male"},"patricia":{"age":32,"sex":"female"}}}

, теперь я могу делать группы ["group1"] ["john"].

Проблема в том, что в группе есть Массив Person, и когда gson сериализуется в json, он помещает каждого человека как элемент массива [{..., а не как свойство group1, которое, в свою очередь, являетсясвойство групп.

Я хотел бы знать, можно ли сказать gson сериализовать в сопоставленные массивы вместо обычных массивов.Если да, то как.

1 Ответ

2 голосов
/ 02 марта 2012

Не используйте массив, если вы не хотите массив.

Если вы переключитесь на использование Map в java, оно должно сериализоваться во второй пример:

class ClassToSerialize {
    private HashMap<String, PersonInfo> group1 = new HashMap<String, PersonInfo>();
    ...
}

class PersonInfo {
    private int age;
    private String sex;
    ...
}

(ключи от HashMap - имена ваших людей)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...