Можно ли использовать комбинатор синтаксического анализа Scala для анализа текстового файла JSON построчно? - PullRequest
0 голосов
/ 28 апреля 2018

Можно ли использовать комбинатор синтаксического анализа Scala для анализа текстового файла JSON построчно?

Я новичок в Скале. Когда я читаю книгу «Программирование в Scala», меня интересует комбинатор парсера Scala. и намереваемся написать простой парсер JSON на практике.

Я намереваюсь читать из текстового файла и анализировать содержимое файла. Путем небольшого исследования я понял, что чтение все содержимое файла в память (например, Source.fromFile("1.json").getLines.mkString), а затем передавать это содержимое в метод parseAll не рекомендуется.

Итак, мой вопрос: возможно ли прочитать текстовый файл построчно, а затем выполнить синтаксический анализ строки?

Я искал в Интернете, но не смог найти никакой подсказки.

Любые намеки приветствуются. Спасибо!

1 Ответ

0 голосов
/ 28 апреля 2018

Вы можете сделать что-то вроде:

Source.fromFile("1.json").getLines.forEach

Возвращаемый вами итератор - BufferedLineIterator, означающий, что по умолчанию он не будет читать все строки в памяти. В тот момент, когда вы вызываете mkString, вы просите итератор прочитать все строки и создать из них строку.

Единственное, что вы должны иметь в виду, что вы должны быть готовы к JSON-объектам в несколько строк.

{"id": 1, "name": "Joe"}

или

{
   "id": 1,
   "name": "Joe"
}

должен выдавать один и тот же объект, но построчное чтение примера 2 немного сложнее

...