Есть ли способ использовать Jackson ObjectMapper для чтения объекта из JSON один за другим?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли способ использовать Jackson ObjectMapper для чтения объекта из JSON один за другим?

Сообщение Anonymous »

Я хотел знать, можно ли использовать 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»