Java 解析HashMap Json.fromJson

Java 解析HashMap Json.fromJson,java,android,json,libgdx,hashmap,Java,Android,Json,Libgdx,Hashmap,这可能是一个新手问题。我在将我的.json解析为hashmap时遇到了问题。我可以轻松地编写json文件,这就是我知道该文件编写正确的原因,但在加载时,我遇到了一个错误: Caused by: java.lang.InstantiationException: java.lang.Class<com.johnny.gamerpg.inventoryController$Weapon> has no zero argument constructor Caused by: com.ba

这可能是一个新手问题。我在将我的.json解析为hashmap时遇到了问题。我可以轻松地编写json文件,这就是我知道该文件编写正确的原因,但在加载时,我遇到了一个错误:

Caused by: java.lang.InstantiationException: java.lang.Class<com.johnny.gamerpg.inventoryController$Weapon> has no zero argument constructor
Caused by: com.badlogic.gdx.utils.SerializationException: Class cannot be created (non-static member class): com.johnny.gamerpg.inventoryController$Weapon
Caused by: com.badlogic.gdx.utils.reflect.ReflectionException: Could not instantiate instance of class: com.johnny.gamerpg.inventoryController$Weapon
谢谢

编辑: 进口,, 包com.johnny.gamerpg

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.JsonWriter;

import java.util.HashMap;

根据stacktrace,
武器
嵌套在
库存控制器
中。根据您的代码,它没有标记为
静态
,而是标记为公共内部类

这意味着需要实例化
inventoryController
,以便实例化
武器
,这就是为什么会出现零参数构造函数异常

顺便说一下,
inventoryController
应该是
inventoryController


将其声明为static,就在这里:)

根据stacktrace,
武器
是嵌套在
库存控制器
中的类。根据您的代码,它没有标记为
静态
,而是标记为公共内部类

这意味着需要实例化
inventoryController
,以便实例化
武器
,这就是为什么会出现零参数构造函数异常

顺便说一下,
inventoryController
应该是
inventoryController


将其声明为静态,您就有了:)

如果仔细查看错误,您会发现它们引用了“
(非静态成员类)
”——将您的类放在它们自己的文件中,它应该可以工作

您可以做的另一件事(如果您想使用GWT,这将对您有所帮助)是开始使用libGDX数据结构,如-它们似乎与libGDX解析器一起工作得更好,并且针对游戏进行了优化


最后,看起来你要为你的游戏中的每一个武器创建类——你可能想考虑保持你的“武器”类,然后传递它的数据,使之成为剑、匕首或工作人员或AK47或诸如此类的东西。在软件开发中,我们称之为“

如果仔细查看错误,您会发现它们引用了一个“
(非静态成员类)
”——将您的类放在它们自己的文件中,它应该可以工作

您可以做的另一件事(如果您想使用GWT,这将对您有所帮助)是开始使用libGDX数据结构,如-它们似乎与libGDX解析器一起工作得更好,并且针对游戏进行了优化


最后,看起来你要为你的游戏中的每一个武器创建类——你可能想考虑保持你的“武器”类,然后传递它的数据,使之成为剑、匕首或工作人员或AK47或诸如此类的东西。在软件开发中,我们称之为“.”

您能出示您的导入声明吗?@John更新!您的java类都在同一个文件中还是在不同的文件中?@John它们都在同一个文件中@johnnyboy5566查看下面的答案您能显示您的导入语句吗?@John更新!您的java类都在同一个文件中还是在不同的文件中?@John它们都在同一个文件中@johnnyboy5566看下面的答案,我要为每种不同类型的武器做一个分类!我要为每种不同类型的武器上一节课!这也是一个完全正确的答案。我只是使用了@John,因为他已经在和我一起工作了,而且我也喜欢把文件拆分的想法!这也是一个完全正确的答案。我只是使用了@John,因为他已经在和我一起工作了,而且我也喜欢把文件拆分的想法!
{
"SwordOfDeath": {
    "class": "com.johnny.gamerpg.inventoryController$Sword",
    "name": "Sword of Death",
    "damageMax": 15,
    "damageMin": 2,
    "priceBuy": 1,
    "priceSell": 2
},
"DaggerOfDeath": {
    "class": "com.johnny.gamerpg.inventoryController$Dagger",
    "name": "Dagger of Death",
    "damageMax": 15,
    "damageMin": 2,
    "priceBuy": 1,
    "priceSell": 2
}
}
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.JsonWriter;

import java.util.HashMap;