【问题标题】:Map to JSON - ignore specific keys映射到 JSON - 忽略特定键
【发布时间】:2017-07-18 13:11:04
【问题描述】:

我想将 java 映射序列化为 json,我绝对可以使用 jackson 或 gson。

但是当我序列化时,我想忽略指定键。有可能吗?

地图是 .我没有/不希望我的 Map 由 POJO 支持,因为键非常通用并且可以是任何东西。我明白如果是POJO,我们可以使用Ignore注解来实现。

【问题讨论】:

  • 我看到一个帖子可能会引起您的兴趣,他们创建了一个自定义地图序列化程序。 stackoverflow.com/questions/30475174/…
  • 也许您可以创建一个副本(或使用原件)并删除您不感兴趣的值?

标签: java json jackson gson


【解决方案1】:

您可以创建一个扩展 HashMap 的自定义类:

public class MyMap extends HashMap<String, Object> {
}

然后注册一个自定义的序列化器,比如:

public class MyMapSerializer extends JsonSerializer<MyMap> {
    @Override
    public JsonElement serialize(MyMap arg0, Type arg1, JsonSerializationContext arg2) {
        JsonObject result = new JsonObject();

        for (String k : arg0.keySet()) {
            if (whatever your condition is) {
                result.add(k, arg0.get(k));
            }
        }

        return result;
    }
}

那么当你创建 Gson 对象时,你需要通过传递一个序列化器的实例来初始化它:

Gson gson = new GsonBuilder().registerTypeAdapter(MyMap.class, new MyMapSerializer()).create();

【讨论】:

    猜你喜欢
    • 2013-12-26
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多