我正在使用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序列化到映射数组而不是普通数组。如果是这样的话。
答案 0 :(得分:2)
如果您不想要数组,请不要使用数组。
如果您更改为在java中使用Map
,则应序列化为第二个示例:
class ClassToSerialize {
private HashMap<String, PersonInfo> group1 = new HashMap<String, PersonInfo>();
...
}
class PersonInfo {
private int age;
private String sex;
...
}
(HashMap
的关键是您的人名)