Java ObjectMapper无法反序列化-无法反序列化。。。。启动外\u数组令牌

Java ObjectMapper无法反序列化-无法反序列化。。。。启动外\u数组令牌,java,json,jackson,deserialization,Java,Json,Jackson,Deserialization,我有这样一个json: { "games": [ { "id": "mhhlhlmlezgwniokgawxloi7mi", "from": "425364_456@localhost", "to": "788295_456@localhost", "token": "xqastwxo5zghlgjcapmq5tirae", "desc": "6CeF9/YEFAiUPgLaohbWt9pC7rt9P

我有这样一个json:

{
  "games": [
      {
        "id": "mhhlhlmlezgwniokgawxloi7mi",
        "from": "425364_456@localhost",
        "to": "788295_456@localhost",
        "token": "xqastwxo5zghlgjcapmq5tirae",
        "desc": "6CeF9/YEFAiUPgLaohbWt9pC7rt9PJlKE6TG6NkA4hE=",
        "timestamp": 1412806372232
      },
      {
        "id": "62jzlm64zjghna723grfyb6y64",
        "from": "425364_456@localhost",
        "to": "788295_456@localhost",
        "token": "xqastwxo5zghlgjcapmq5tirae",
        "desc": "Z/ww2XroGoIG5hrgiWsU1P8YHrv4SxiYHHoojzt9tdc=",
        "timestamp": 1412806373651
      }
    ]
}
我正在尝试使用
ObjectMapper
将其反序列化为对象。正如你所看到的,它本质上是一个游戏列表

我有这样的课程:

@JsonRootName(value="games")
public class GameJson{
    private List<Game> games;
// getters and setters

}
在我的代码中,
ObjectMapper
正在执行以下操作:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);

GameJson json = mapper.readValue(
                       new FileInputStream(gamesFile), GameJson.class);
然后我得到这个错误:

无法从
START\u数组中反序列化
com.games.collection.GameJson的实例

我正在尝试不同的方法来做到这一点,但出来时没有运气。有人能帮忙吗

谢谢

摆脱

@JsonRootName(value="games")
该注释将带注释的类型标识为映射到名为
“games”
的JSON键的JSON对象的目标。在您的例子中,这是一个JSON数组。无法将数组反序列化到
GameJson
类中

,您还需要删除启用
@JsonRootName
的配置

mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);

谢谢,但是你能告诉我它是一个数组而不是一个列表吗?@SasankaPanguluri它是一个JSON数组。JSON数组可以反序列化为
Collection
类型(
List
Set
)或Java数组。@SasankaPanguluri Jackson正在尝试将名为
games
的数组反序列化为
GameJson
对象,而不是将根JSON反序列化为
GameJson
。这很有意义。我试过你说的,但还是不起作用。我删除了mapper.configure(反序列化功能.UNWRAP_ROOT_值,true);它成功了。谢谢大家!@SasankaPanguluri啊是的,我错过了你配置的那部分。不客气。
mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);