使用'fromJson'反序列化对象时,Gson使空数组'null'

时间:2016-03-31 15:22:37

标签: java arrays json arraylist gson

这就是我构建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<Entity> elements = new ArrayList<Entity>();

因此,每次以正常方式创建对象时,都会启动数组,但在使用Gson创建数组时,数组为空。

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

1 个答案:

答案 0 :(得分:0)

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

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