Подтвердите JSON перед дальнейшей обработкой - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть следующий CSV-файл (в производстве число записей может варьироваться от 20k-100k и имеет много полей)

id,firstname,lastname,email,profession
100,Betta,Wandie,Betta.Wandie@gmail.com,developer
101,Janey,Firmin,Janey.Firmin@gmail.com,doctor

Мне нужно преобразовать это в json и выполнить дальнейшую обработку. CSV -> JSON -> ПРОЦЕСС ДАЛЬШЕ

. Я могу конвертировать его в JSON напрямую, используя приведенный здесь код , напрямую конвертировать файл CSV в JSON файл с использованием библиотеки Джексона

Но я хочу сделать проверки для json, например, если фамилия имеет нулевое значение, затем игнорировать эту запись или идентификатор, а затем игнорировать эту запись.

Как я могу обработать проверку? I Я использую Java 8 и весеннюю загрузку последней версии

1 Ответ

0 голосов
/ 03 апреля 2020

Я сделал нечто подобное, используя JavaScript (Нашорн). Да, это противно, но это работает, и это удивительно быстро!

К сожалению, у меня нет исходного кода под рукой ...

Почему я сделал это таким образом, по тем же причинам как @ chrylis-on strike подразумевает в своем комментарии: проверка намного проще, если у вас есть объект для каждой записи JSON. Но так как мне было лень, и определенно не было необходимости в объекте Java, который я должен был создать для этого, у меня возникла идея со скриптом JavaScript внутри моей программы Java.

По сути, строка JSON является источником для JavaScript программы; Вы можете назначить его непосредственно переменной JavaScript, а затем получить доступ к записям в виде элементов массива и к полям по их имени. Поэтому ваш код JavaScript просматривает записи и удаляет те, которые не соответствуют вашим правилам проверки.

Теперь часть Java: ключевое слово здесь - JSR223; это API, который позволяет вам выполнять скрипты в вашей среде Java. В вашем случае вы должны предоставить преобразованный JSON в контексте, а затем запустить скрипт, который записывает измененный JSON обратно в контекст.

Если преобразованный JSON слишком велик, Вы можете даже использовать ту же технику, чтобы проверить запись за записью; если вы скомпилируете скрипт, он будет почти таким же быстрым, как и собственный Java.

. Вы даже можете опустить Джексона и позволить JavaScript выполнить преобразование…

Извините, что я не могу предоставить примеры кода ; Я постараюсь получить их и добавить, если получу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...