【发布时间】:2016-12-27 08:35:42
【问题描述】:
我在 json 文件中有以下数据。
{
"product":"Data",
"data":{
"zip":[
{
"codeValue":"12345",
"distance":[
{
"5":"a c"
},
{
"2":"z c"
}
]
},
{
"codeValue":"60089",
"distance":[
{
"5":"a c"
},
{
"2":"z c"
}
]
}
]
}
}
我正在尝试使用以下代码打印zip 大小。
public void getJsonResponse() throws Exception {
String text = getTheData();
System.out.println(text);
ObjectMapper objMap = new ObjectMapper();
Map<String, Object> map = objMap.readValue(text, new TypeReference<Map<String, Object>>() {
});
String mainMap = map.get("product").toString();
String getData = map.get("data").toString();
Map<String, Object> map1 = objMap.readValue(getData, new TypeReference<Map<String, Object>>() {
});
List zip = (List) map1.get("zip");
System.out.println(zip.size());
}
这里而不是 zip.size() 上的 sysout,如果我使用 mainMap,我得到的输出为 Data,但是当我使用 zip.size() 时,我得到一些异常为
线程“主”com.fasterxml.jackson.core.JsonParseException 中的异常:意外字符('z'(代码 122)):期望用双引号来开始字段名称 在 [来源:java.io.StringReader@60f82f98;行:1,列:3] 在 com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1524) 在 com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:557) 在 com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:475) 在 com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddName(ReaderBasedJsonParser.java:1293) 在 com.fasterxml.jackson.core.json.ReaderBasedJsonParser._parseName(ReaderBasedJsonParser.java:1190) 在 com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextToken(ReaderBasedJsonParser.java:612) 在 com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringMap(MapDeserializer.java:412) 在 com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:312) 在 com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:26) 在 com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2993) 在 com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2105) 在 onlyJava.JsonDataCAll.getJsonResponse(JsonDataCAll.java:24) 在 onlyJava.Test.main(Test.java:13)
请让我知道我哪里出错了,我该如何解决这个问题。
【问题讨论】: