【问题标题】:When deserialising an object using 'fromJson', Gson makes empty array 'null'使用“fromJson”反序列化对象时,Gson 将空数组设为“null”
【发布时间】:2016-03-31 15:22:36
【问题描述】:

这就是我构建 Gson 的方式:Gson gson = new GsonBuilder().create();

这就是我从 Json 创建对象的方式:

JsonObject obj = gson.fromJson(line, JsonObject.class); //JsonObject allows us to retrieve information by name

Class<? extends Tile> resultClass = (Class<? extends Tile>) Class.forName(obj.get("className").getAsString()); //Get the class of the tile we are currently processing
newTile = resultClass.cast(gson.fromJson(line, resultClass)); //Cast the new tile to the correct class

我已经调试了这段代码,它似乎工作正常(返回一个与 json 值相同的对象)。但是,当我尝试访问对象的超类中的空数组(未在 json 中列出)时,该数组为“null”。数组是这样初始化的:

private ArrayList&lt;Entity&gt; elements = new ArrayList&lt;Entity&gt;();

所以每次正常创建对象时,都会初始化数组,但是用Gson创建时,数组为null。

Gson 不会初始化空数组吗?我是否必须在 Json 中包含空数组才能对其进行初始化?

【问题讨论】:

标签: java arrays json arraylist gson


【解决方案1】:

如果 Gson 遇到一个在 json 文件中没有字段的变量,那么它会自动设置为 null,而不是它的默认值。 Source

我想我只需要将每个变量保存到一个字段中,或者手动创建对象并手动应用相关字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 1970-01-01
    • 2016-01-22
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多