【发布时间】:2016-07-30 22:04:35
【问题描述】:
我在使用 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 的匹配解决方案。
任何帮助将不胜感激。
注意:这里提到的
JSON与没有Key的JSON不同,对于第一个元素,它直接具有值,并且在该值内它具有key:valuepair。 我不确定如何访问值内的key:value对。
【问题讨论】:
-
您希望如何将 JSON 数组转换为 Java
HashMap? -
它不重复你应该先检查 JSON 并正确阅读问题。