Java 试图从JSON字符串映射对象时发生Gson JsonSyntaxException

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" }

我开始尝试各种JSON对象映射库

目前我正在使用Gson 2.8.6,我有以下JSON:

{
   "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));