gpt4 book ai didi

java - 无法从 START_ARRAY token 中反序列化 java.util.HashMap 的实例

转载 作者:搜寻专家 更新时间:2023-10-30 21:46:40 25 4
gpt4 key购买 nike

我在使用 jackson-core-2.7.3.jar 解析 JSON 时遇到问题你可以从这里得到它们 http://repo1.maven.org/maven2/com/fasterxml/jackson/core/

我的 JSON 文件是

[
{
"Name": "System Idle Process",
"CreationDate": "20160409121836.675345+330"
},
{
"Name": "System",
"CreationDate": "20160409121836.675345+330"
},
{
"Name": "smss.exe",
"CreationDate": "20160409121836.684966+330"
}
]

我试图解析的 Java 代码是

byte[] mapData = Files.readAllBytes(Paths.get("process.txt"));
Map<String,String> myMap = new HashMap<String, String>();
ObjectMapper objectMapper=new ObjectMapper();
myMap = objectMapper.readValue(mapData, HashMap.class);
System.out.println("Map is: "+myMap);

但是在执行时我得到了错误

com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.HashMap out of START_ARRAY token
at [Source: [B@34ce8af7; line: 1, column: 1]
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:216)
at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:873)
at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:869)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer._deserializeFromEmpty(StdDeserializer.java:874)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:337)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:26)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3789)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2872)

我尝试在 stackoverflow 上进行搜索,但找不到与此类 JSON 匹配的解决方案。

如有任何帮助,我们将不胜感激。

NOTE: This JSON mentioned here is different a JSON without Key , for the first element it has value directly and inside that value it has key:valuepair. I am not sure how do I access key:value pair which is inside a value.

最佳答案

引发此异常是因为您正在尝试反序列化 ListMap .

解决方案是创建 List<Map<String, Object>> 的 TypeReference :

List<Map<String, Object>> myObjects = 
mapper.readValue(mapData , new TypeReference<List<Map<String, Object>>>(){});

关于java - 无法从 START_ARRAY token 中反序列化 java.util.HashMap 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36519974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com