这就是我构建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中包含空数组才能进行初始化?
答案 0 :(得分:0)
如果Gson遇到一个在json文件中没有字段的变量,那么它将自动设置为null,而不是它的默认值。 Source
我想我只需要将每个变量保存到字段中,或手动创建对象并手动应用相关字段。