GSON数组到json但映射数组

时间:2012-03-01 23:48:31

标签: java javascript json gson

我正在使用Java中的Gson库将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的属性,而group1的属性又是group的属性

我想知道是否可以告诉gson序列化到映射数组而不是普通数组。如果是这样的话。

1 个答案:

答案 0 :(得分:2)

如果您不想要数组,请不要使用数组。

如果您更改为在java中使用Map,则应序列化为第二个示例:

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

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

HashMap的关键是您的人名)