我想将 java 映射序列化为 json,我绝对可以使用 jackson 或 gson。
但是当我序列化时,我想忽略指定的键。可能吗?
map 是。我没有/不希望我的 map 由 POJO 支持,因为键非常通用,可以是任何东西。据我了解,如果是POJO,我们可以使用Ignore Annotation来实现。
最佳答案
您可以创建一个扩展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();
关于java - 映射到 JSON - 忽略特定键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45167805/