Android java.lang.IllegalStateException:应为BEGIN_对象,但在第1行列处为字符串
我正在学习烤肉,但在尝试时遇到了一个问题。 发现了很多类似的问题和更多的解决方案,但没有任何帮助 那是我的jsonAndroid java.lang.IllegalStateException:应为BEGIN_对象,但在第1行列处为字符串,android,json,gson,Android,Json,Gson,我正在学习烤肉,但在尝试时遇到了一个问题。 发现了很多类似的问题和更多的解决方案,但没有任何帮助 那是我的json { "firstName": "name", "lastName": "last", "resistances": { "a1": 1, "a2": 2, "a3": 3, "a4": 4 } } 玩家级 class Player implements Serializable{ String firstName;
{
"firstName": "name",
"lastName": "last",
"resistances": {
"a1": 1,
"a2": 2,
"a3": 3,
"a4": 4
}
}
玩家级
class Player implements Serializable{
String firstName;
String lastName;
int[] resistances;
public Player(String firstName, String lastName, int[] resistances) {
this.firstName = firstName;
this.lastName = lastName;
this.resistances = resistances;
}
}
还有我是如何努力的
Gson gson = new Gson();
Player player = gson.fromJson("test.json", Player.class);
SOS您的JSON“Resistences”对象应该如下所示,以便解析代码正常工作:
{
"firstName": "name",
"lastName": "last",
"resistances": [
1, 2, 3, 4
]
}
或者,将Java中的电阻变量更改为映射。-GSON可以将字典JSON对象解析为映射
class Player implements Serializable {
String firstName;
String lastName;
Map<String, Integer> resistances;
public Player(String firstName, String lastName, Map<String, Integer> resistances) {
this.firstName = firstName;
this.lastName = lastName;
this.resistances = resistances;
}
}
类播放器实现可序列化{
字符串名;
字符串lastName;
地图电阻;
公共播放器(字符串名、字符串名、地图阻力){
this.firstName=firstName;
this.lastName=lastName;
这是电阻=电阻;
}
}
解析字符串本身,在您的例子中是test.json
,而不是它所代表的文件。您需要从试图解析的文件创建一个读取器,并将其作为第一个参数传递
如果test.json位于外部存储器中:
String fpath = Environment.getExternalStorageDirectory() + "/path/to/test.json";
try {
FileReader fr = new FileReader(fpath));
gson.fromJson(fr, Player.class);
} catch (Exception e1) {
e1.printStackTrace();
}
第三个变量将是一个对象。。Resistences..最外面的json pbj必须有一个名称..,“Resistences”要成为一个数组,它应该是:“Resistences”:[1,2,3,4],所以错误消息是因为它正在查找字符串“a1”,我从一开始就应该这样做,但这取决于文件的位置。如果
test.json
位于raw
资源文件夹中,则可以使用new InputStreamReader(getResources().openRawResource(R.raw.test))
(扩展名被忽略)。如果在sd卡上,答案会长一点。非常感谢!它起作用了!还有一个问题-放置.json文件是资产文件夹还是原始文件之间的区别是什么?这里再次解释一下tyvm!我能给你+业力吗D