我有一个像这样的json字符串
{"jobs":[{"id":"1","state":"Visited","runTime":6224,"finalJobAssignment":{"owner":"10.107.181.236:5363",
"resourceId":"11",
"listingPositions":["11"]},"keys":1765624,"range":{"startPrefix":"aa",
"endPrefix":"bb"},"resources":[{"resourceId":"11"}]},{"id":"2","state":"Visited","runTime":6224,"finalJobAssignment":{"owner":"10.107.181.236:5363",
"resourceId":"22",
"listingPositions":["22","33"]},"keys":1765624,"range":{"startPrefix":"cc",
"endPrefix":"dd"},"resources":[{"resourceId":"22"}]}]}
我试图使用自定义反序列化器反序列化,我只需要json数组中的resourceId,startPrefix,endPrefix和listingPositions(这是一个列表),如何摆脱“ jobs”并返回我的自定义对象的列表?
自定义对象只有上面有用的字段
目前我有这样的东西
private List<AuditEntry> deserialize(final JsonNode node,
final DeserializationContext deserializationContext) throws IOException {
List<AuditEntry> res = new ArrayList<>();
Iterator<JsonNode> iterator = node.get(JOBS_KEY).elements();
while (iterator.hasNext()) {
JsonNode jsonNode = iterator.next();
final String startKey = jsonNode.get(RANGE_KEY).get(START_PREFIX_KEY).asText();
final String endKey = jsonNode.get(RANGE_KEY).get(END_PREFIX_KEY).asText();
final String partitionId;
final String resourceId;
final List<JournalChapterAndSN> listingPositions;
final JsonParser listingPositionsParser;
resourceId = jsonNode.get(FINAL_JOB_ASSIGNMENT_KEY).get(RESOURCE_ID_KEY).asText();
listingPositionsParser = jsonNode.get(FINAL_JOB_ASSIGNMENT_KEY).get(LISTING_POSITIONS_KEY).traverse();
listingPositionsParser.nextToken();
List<String> listingPositionsString = deserializationContext.readValue(listingPositionsParser, List.class);
}
}
res.add(new AuditEntry(range, partitionId, listingPositions));
}
return res;
}
但是,当处理listingPositionString时,DeserializationContext似乎使用的是我的自定义解串器,而不是默认的解串器,从而导致npe,我该如何解决呢?