【发布时间】:2017-03-19 09:30:54
【问题描述】:
我在处理我们的项目时想知道一些事情。 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);
}
【问题讨论】:
-
在构造函数中下断点,调试代码不行吗?
-
@RC。是的,你是对的,我只是测试了它并没有调用构造函数。
-
我会假设它使用空构造函数来实例化对象,而读入的字段将直接使用反射设置。
-
是的,我想通了。 @EpicPandaForce
-
正如我在回答中所说,您需要实现自定义
JsonDeserializer并从那里调用构造函数。 GSON 尚不支持调用构造函数。