是否可以使用Scala的解析器组合器逐行解析JSON文本文件?

时间:2018-04-27 22:20:17

标签: scala text-parsing parser-combinators

是否可以使用Scala的解析器组合器逐行解析JSON文本文件?

我是Scala的新手。在阅读书籍" Scala编程"时,我对Scala的解析器组合感兴趣 并打算编写一个简单的JSON解析器作为练习。

我打算从文本文件中读取并解析文件内容。通过一点研究,我意识到阅读 将文件的所有内容存入内存(例如Source.fromFile("1.json").getLines.mkString),然后将该内容提供给方法parseAll

所以我的问题是:是否可以逐行读取文本文件,然后以基于行的方式进行解析?

我在网上搜索但无法找到任何线索。

任何提示都表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

Event

你得到的迭代器是Source.fromFile("1.json").getLines.forEach ,这意味着默认情况下它不会将所有行读入内存。 你调用BufferedLineIterator的那一刻,你要求迭代器读取所有行并从中创建一个字符串。

您唯一应该记住的是,您需要为多行上的JSON对象做好准备。

mkString

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

应该生成相同的对象,但逐行读取示例2有点棘手