【问题标题】:Make Gson serialize Set with certain order使 Gson 按一定顺序序列化 Set
【发布时间】:2017-10-06 00:32:55
【问题描述】:

我有一张这样的地图:Map<String, Integer>。 map的key是Gson序列化Set<String>生成的字符串。

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

如果我有一个Set<String> 并尝试更新/删除该地图中的相应条目,这将导致麻烦。

假设地图的键必须是一个字符串,它是由 Gson 序列化的 Set<String>serialized。我想知道是否有办法强制 Gson 始终将相同的 Set<String> 序列化为相同的字符串。

【问题讨论】:

    标签: java serialization gson


    【解决方案1】:

    不,这是不可能的。 HashSet 中的顺序不一样。如果您真的希望它们被订购,请使用 ArrayList 并制作您自己的序列化程序。

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

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

    所以你不应该在HashMap或JSONObject中依赖顺序和使用索引。相反,您应该使用密钥。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-17
      • 2013-03-09
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多