Java ObjectMapper无法反序列化-无法反序列化。。。。启动外\u数组令牌
我有这样一个json: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
{
"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);