当前位置: 首页 > 面试题库 >

Gson在序列化期间添加字段

蔚宏大
2023-03-14
问题内容

我找不到在Gson进行序列化期间添加自定义字段的简单方法,我希望其他人可以提供帮助。

这是一个示例类来展示我的问题:

public class A {
  String id;
  String name;
  ...
}

当我序列化类AI时,想返回以下内容:

{ "id":"123", "name":"John Doe", "url_to_user":"http://www.example.com/123" }

其中url_to_user未存储在我的类A的实例中,但可以与数据一起在类A的实例中生成。

有没有简单的方法可以做到这一点?我宁愿避免只添加一个字段就编写整个序列化程序。


问题答案:

Gson.toJsonTree得到JsonElement,用它可以动态交互。

A a = getYourAInstanceHere();
Gson gson = new Gson();
JsonElement jsonElement = gson.toJsonTree(a);
jsonElement.getAsJsonObject().addProperty("url_to_user", url);
return gson.toJson(jsonElement);


 类似资料:
  • 问题内容: 我有一个包含a 和a的类。现在,我想使用gson序列化对象,但排除该字段。 如您所见,我已经尝试使用,但是似乎没有任何作用。另外,我已经将该字段设置为私有,因为我认为这会“覆盖” 但运行以下代码: 仍然会导致以下文件内容没有错误: 那我在做什么错?我现在一无所知,并且希望得到任何帮助,因为这似乎行不通。 提前致谢。 问题答案: 为了获得此结果,您需要使用注释所有字段: 并将Gson配置

  • 映射器: 要序列化的类: 我不懂这个领域: 从Jackson那里找到的?我用日志检查了我的本地地图,结果发现这个字段不存在,但在序列化过程中它出现了。

  • 杰克逊v1。9.13 spring 3.2.0嗨,我花了好几天的时间试图弄清楚如何在序列化期间从bean向JSON中添加字段。 这似乎是一个非常基本的功能,但我每走一条路都会碰到橡胶墙。 我想要实现的是: 示例bean: 输出: 我认为最简单的方法是扩展BeanSerializer,编写“_type”属性,并委托剩余字段的超类序列化。问题是,方法的可访问性和一些关键方法的“最终”条款使其陷入困境。

  • 问题内容: 我正在阅读“有效Java”中的序列化一章。我试图理解本书中的以下段落。 如果使用可序列化和可扩展的实例字段实现类,则应注意这一点。如果该类具有将其实例字段初始化为其默认值(整数类型为零,布尔值为false,对象引用类型为null)而将被违反的不变量,则必须将此readObjectNoData方法添加到该类: 我不确定上述陈述的含义。 为了测试这一点,我创建了一个Person类(可序列化

  • 是否有方法序列化类的瞬态字段?文档中提到默认情况下不支持它,但是否有办法打开它? 非常感谢

  • 奇怪的是下面的测试用例会失败。有人知道为什么吗?