у меня есть строка 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"}]}]}
Я пытаюсь десериализовать с помощью настраиваемого десериализатора, мне нужны только resourceId, startPrefix, endPrefix иistingPositions (который является списком) из json массив, как мне избавиться от «заданий» и вернуть список моих настраиваемых объектов?
настраиваемый объект имеет только указанные выше полезные поля
В настоящее время у меня есть что-то вроде этого
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;
}
Однако при обработке listPositionString, DeserializationContext, похоже, использует мой настраиваемый десериализатор вместо стандартного, что приводит к npe, как я могу решить эту проблему?