使Gson序列化按一定顺序设置

时间:2017-10-06 00:32:55

标签: java serialization gson

我有这样的地图:Map<String, Integer>。地图的关键是一个字符串,它是通过Gson序列化Set<String>生成的。

我担心Gson可能并不总是将相同的Set<String>序列化为相同的字符串(项目的顺序可能不同?)。

如果我有Set<String>并尝试更新/删除该地图中的相应条目,则会造成麻烦。

假设map的键必须是由Gson序列化的Set<String>字符串。我想知道是否有办法迫使Gson始终将相同的Set<String>序列化为相同的字符串。

1 个答案:

答案 0 :(得分:1)

不,这是不可能的。 HashSet中的顺序不相同。如果您确实希望对它们进行排序,请使用ArrayList并制作自己的序列化程序。

一种丑陋的方式可能是将Keys存储在一个ArrayList中,将值存储在另一个ArrayList中。

但问题仍然存在!!解析JSON对象时,JSON对象中的字段将不按顺序排列。

因此,您不应该依赖于HashMap或JSONObject中的顺序和使用索引。相反,你应该使用密钥。