我正在尝试将 JSON 数组转换为 Java 对象,但在理解如何使用 GSON 时遇到问题。
JSON 数组如下所示:
"[
{
"category": "1",
"checks": [
{
"check": "1.1",
"penaltypoints": "1.1",
"keypoint": "1.1"
},
{
"check": "1.2",
"penaltypoints": "1.2",
"keypoint": "1.2"
}
]
},
{
"category": "2",
"checks": [
{
"check": "2.1",
"penaltypoints": "2.1",
"keypoint": "2.1"
},
{
"check": "2.2",
"penaltypoints": "2.2",
"keypoint": "2.2"
}
]
}
]"
我对应的Java类是:
class Category {
public String description;
public List<Check> checks;
}
class Check {
public String description;
public float penaltyPoints;
public KeyPoint keypoint;
}
class KeyPoint {
public String description;
}
这就是我调用 GSON 的方式:
Gson gson = new Gson();
Category categoriesArray[] = gson.fromJson(jsonString, Category[].class);
目前它抛出以下错误:
Expected BEGIN_OBJECT but was STRING at line 1 column 125
我是 GSON 新手,在理解它的工作原理时遇到问题。谁能帮助我理解我做错了什么?
最佳答案
你在期待这个
"keypoint": "2.1"
要映射到
public KeyPoint keypoint;
...
class KeyPoint {
public String description;
}
在 Java-JSON 转换中,POJO 旨在映射到 JSON 对象,反之亦然。在这里,您尝试将 JSON String 映射到 POJO。默认情况下这是行不通的。
使用 Gson 编写并注册您自己的 TypeAdapter
来执行此转换,或者将您的 JSON 更改为
"keypoint" : {
"description" : "2.1"
}
关于java - 带有 GSON 的 JSON 数组引发错误 "Expected BEGIN_OBJECT but was STRING",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24167620/