java gson在序列化时替换密码值

标签 java customization deserialization gson

在使用 Gson 反序列化对象时,如何用 XXX 替换密码字段的值?我找到了这篇文章:Gson: How to exclude specific fields from Serialization without annotations基本上跳过了这个领域。这将是一个选项,但我仍然更愿意用 XXX

替换该值

我也尝试过这个:

GsonBuilder builder = new GsonBuilder().setPrettyPrinting();
builder.registerTypeAdapter(String.class, new JsonSerializer<String>(){

  @Override public JsonElement serialize(String value, Type arg1, JsonSerializationContext arg2){
        // could not find a way to determine the field name     
        return new JsonPrimitive(value);
  }
});

不幸的是,我无法确定该字段的名称。那么还有其他选择吗?

我使用 Gson 以“漂亮”的方式记录一些对象,所以我在阅读日志时不需要费心格式化。

最佳答案

您可以跳过克隆步骤,只需正常序列化,然后替换密码即可:

public JsonElement serialize(User u, Type t, JsonSerializationContext ctx) {
          JsonObject obj = new Gson().toJsonTree(u).getAsJsonObject();
          obj.remove("password");
          obj.add("password", new JsonPrimitive("xxxxx");
          return obj;
}

关于java gson在序列化时替换密码值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9063558/

相关文章:

java - 在卡蒙达重试

java - JNI UnsatisfiedLinkError .jnilib 不喜欢

c# - 使用 T4 自定义一些自动生成的代码

c++ - Qt QMetaObjects 和从 QWidget 到 QObject 的转换

java - 从 Memcache 中获取低级数据存储实体对象时反序列化缓慢

java - 可视化堆栈中的推送方法?

java - 如何使用 spring 注入(inject)或 Autowiring Class 类型?

css - 如何设置 chrome 滚动条的样式以使其看起来和行为像 firefox

javascript - 如何检索自定义 DOM 属性的值?

Python、yaml嵌套对象