gpt4 book ai didi

java - Google 的 GSON 是否使用构造函数?

转载 作者:搜寻专家 更新时间:2023-10-30 21:08:10 26 4
gpt4 key购买 nike

我在做我们的项目时想知道一些事情。 Google 的 GSON API 是否使用您要反序列化的 JSON 中的构造函数?例如:

我有一个 JSON 字符串,我想将其转换为 Employee 对象。 Employee 对象有一个构造函数,它对参数进行一些检查(例如,它的 ID > 0)。我们使用下面的代码反序列化 JSON。但是在将 JSON 反序列化为 Employee 时是否会调用此构造函数?

GSON 链接:https://github.com/google/gson

编辑:所以在尝试断点后我发现构造函数没有被调用。无论如何,有人知道调用它的方法吗?

/**
* The GSON class to help you create and de-serialize the JSON objects.
*/
Gson gson = new Gson();

/**
* Convert JSON to an object.
* @param json The JSON to convert.
* @param cls The class to convert to.
* @return The converted JSON to object.
*/
public Object jsonToObject(String json, Class<?> cls) {
return gson.fromJson(json, cls);
}

最佳答案

像 GSON、Jackson 或 Java Persistence API (JPA) 这样的库通常使用无参数(默认)构造函数来实例化对象并通过反射设置其字段。在较新版本的 GSON 中,您甚至不必再声明默认构造函数,请参阅 here .

如果您必须在 GSON 中调用特定的构造函数,您可以实现自定义的 JsonDeserializer,就像已经提到的 here .

在 Jackson 等其他库中,您可以在方法而不是字段(如 GSON does )上定义反序列化,这允许您替换缺少的专用构造函数调用。

关于java - Google 的 GSON 是否使用构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40441460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com