我正在尝试将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"
}