我有以下JSON:
[
{
"A":"Lorem Ipsum ",
"B":"Lorem Ipsum ",
"C":"Lorem Ipsum ",
"D":"Lorem Ipsum ",
"E":"Lorem Ipsum ",
"F":"Lorem Ipsum ",
"G":301,
"H":[
{
"Lorem Ipsum ":4,
"Lorem Ipsum ":20,
"Lorem Ipsum":0
},
{
"Lorem Ipsum ":5,
"Lorem Ipsum ":19.2,
"Lorem Ipsum ":0.8
},
{
"Lorem Ipsum ":1,
"Lorem Ipsum ":8,
"Lorem Ipsum ":4
},
{
"Lorem Ipsum ":3,
"Lorem Ipsum ":14.2,
"Lorem Ipsum ":5.8
},
{
"Lorem Ipsum ":2,
"Lorem Ipsum ":20,
"Lorem Ipsum ":0
}
],
"I":[
],
"J":[
],
"20-01-2014":20,
"27-01-2014":19.2,
"30-12-2013":8,
"13-01-2014":14.2,
"06-01-2014":20,
"K":"81.40"
},
{
"reportKey":"something"
}
]
Run Code Online (Sandbox Code Playgroud)
我想获取reportKey值,然后将其从文件中删除.但首先我需要访问它,我的代码似乎不起作用:
final ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readValue(rawContentParameters, JsonNode.class);
logger.info("ExportController : generatesExportExcel : parameters: {}", jsonNode.get("reportKey").textValue());
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个java.lang.NullPointerException.为什么?
解:
final ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readValue(rawContentParameters, JsonNode.class);
logger.info("ExportController : generatesExportExcel : parameters: {}", rootNode.get(rootNode.size() - 1).get("reportKey").textValue());
Run Code Online (Sandbox Code Playgroud)
您正在访问根JsonNode,就好像它是一个对象,但它包含在一个数组中.您需要先从数组中提取第二个对象,然后才能访问reportKey:
JsonNode array = objectMapper.readValue(rawContentParameters, JsonNode.class);
JsonNode object = array.get(1);
String reportKey = object.get("reportKey").textValue();
logger.info("ExportController : generatesExportExcel : parameters: {}", reportKey);
Run Code Online (Sandbox Code Playgroud)