jackson中处理json中键不为双引号的情况
在jackson中,如果要处理如下的情况:
file内容:
id: "station0111",
title: "莘庄",
description: "莘庄",
pin: "hidden",
fill: "#4d5e6d",
x: "0.2972",
y: "0.6264",
zoom: "12",
distance: null
以下为代码:
File file=new File("E:\\temp\\line1.json");
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode=null;
try {
jsonNode= mapper.readTree(file);
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
会发现出错:
org.codehaus.jackson.JsonParseException:
Unexpected character (‘n’ (code 99)): was expecting double-quote to start field name
at [Source: java.io.StringReader@7c87c24a; line: 1, column: 3]
其实是因为标准json中,要求键和值其实都是要双引号的.
但如果非要设置键值为非双引号不可的话,则需要设置JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES,如下:
File file=new File("E:\\temp\\line1.json");
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode=null;
mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
try {
jsonNode= mapper.readTree(file);
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
这样就可以正确读取json文件中键不带双引号的情况了