2012-03-01 8 views
0

Я использую библиотеку Gson в Java для сериализации java-объектов для jSon и наоборот.массив GSON для 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"] [ "джон"].

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

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

ответ

2

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

При переходе на использовании Map в Java, он должен сериализовать на свой второй пример:

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

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

(Ключи к HashMap являются имена ваших людей)

+0

отлично работает:) ... спасибо –

Смежные вопросы