映射到JSON - 忽略特定键

时间:2017-07-18 13:11:05

标签: java json jackson gson

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

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

地图是。我没有/希望我的地图由POJO支持,因为密钥非常通用,可以是任何东西。我知道如果它是POJO,我们可以使用Ignore注释来实现。

1 个答案:

答案 0 :(得分:0)

您可以创建一个扩展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();