Я хотел знать, можно ли использовать ObjectMapper от Jackson для чтения событий одно за другим.
У меня есть большой файл JSON, состоящий из множества событий, которые мне нужно преобразовать в XML. Я не хочу загружать полные события JSON в свою память, а хочу обрабатывать события одно за другим. Следовательно, я использую библиотеку Java Jackson, которая может проходить через файл JSON и получать одно событие JSON за раз, которое я затем могу преобразовать в XML. Таким образом, одновременно в память будет загружаться только одно событие.
Я знаю, что могу использовать JsonParser от Джексона, который будет проходить через файл JSON один за другим, но таким образом мне нужно обрабатывать множество вещей.
У меня есть классы Java, созданные из XSD (с использованием JAXB2), поэтому я подумываю об использовании класса ObjectMapper из Jackson, который может напрямую сопоставлять каждое событие с соответствующим классом Java, который позже я могу использовать для преобразования в соответствующий XML с помощью метода Marshalling.
Я не понимаю, как прочитать событие одно за другим с помощью ObjectMapper и назначить его соответствующему классу Java.
Ниже приведена простая версия моего файла JSON: (Это образец JSON, мой исходный JSON очень сложен)
{
"@context":"https://context.org/context.jsonld",
"isA":"SchoolManagement",
"format":"application/ld+json",
"schemaVersion":"2.0",
"creationDate":"2021-04-21T10:10:09+00:00",
"body":{
"members":[
{
"isA":"student",
"name":"ABCS",
"class":10,
"coaching":[
"XSJSJ",
"IIIRIRI"
],
"dob":"1995-04-21T10:10:09+00:00"
},
{
"isA":"teacher",
"name":"ABCS",
"department":"computer science",
"school":{
"name":"ABCD School"
},
"dob":"1995-04-21T10:10:09+00:00"
},
{
"isA":"boardMember",
"name":"ABCS",
"board":"schoolboard",
"dob":"1995-04-21T10:10:09+00:00"
}
]
}
}
Я хочу прочитать событие в массиве «члены» одно за другим и проверить, является ли оно «учеником», «учителем» и т. д., а затем назначить его соответствующему классу.
public class Main {
public static void main(String[] args) throws JsonParseException,
JsonMappingException,
IOException,
JAXBException {
final ObjectMapper objectMapper = new ObjectMapper();
// Accept the Null values for some fields
objectMapper.setSerializationInclusion(Include.NON_NULL);
// If any unknown properties found then do not fail
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//Here I want to read the element within an array
Student event = objectMapper.readValue(Main.class.getResourceAsStream("/events.json"), Student.class);
System.out.println(event);
}
}
Подробнее здесь: https://stackoverflow.com/questions/671 ... -from-json