Java 试图从JSON字符串映射对象时发生Gson JsonSyntaxException
我开始尝试各种JSON对象映射库 目前我正在使用Gson 2.8.6,我有以下JSON:Java 试图从JSON字符串映射对象时发生Gson JsonSyntaxException,java,json,gson,Java,Json,Gson,我开始尝试各种JSON对象映射库 目前我正在使用Gson 2.8.6,我有以下JSON: { "data": [ { "id" : 123, "name" : "ABC" }, { "id" : 234, "name" : "BCD" }
{
"data":
[
{
"id" : 123,
"name" : "ABC"
},
{ "id" : 234,
"name" : "BCD"
}
]
}
以下类将用于映射
Data.java
public class Data {
private List<Item> data;
}
我正在获取com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:在调用fromJson()方法时,应为BEGIN_数组,但在第1行第2列路径$:处为BEGIN_对象
Gson-Gson=new-Gson();
类型listType=newTypeToken(){}.getType();
List=gson.fromJson(json,listType);
System.out.println(gson.toJson(list));
使用jsonsimple库,我将“数据”作为JsonArray获取,然后在内部循环时映射对象。现在事情比我想象的要复杂。有什么想法吗?Json似乎是有效的。请提供您的异常的完整跟踪。此外,我个人更喜欢JSON/Jackson(或也称为更快的XML)库而不是Gson。然而,这是个人偏好的问题,如果我不是,Gson实际上是基于杰克逊的mistaken@MichaelGantman不,这两个是完全不同的。您的JSON文档适合单个
数据
实例的对象映射,那么您为什么要使用需要JSON数组[…]
的列表
gson.fromJson(json,Data.class)
为json文档做了正确的事情。
public class Item {
private int id;
private String name;
}
Gson gson = new Gson();
Type listType = new TypeToken<List<Data>>(){}.getType();
List<Data> list = gson.fromJson(json, listType);
System.out.println(gson.toJson(list));