在Scala中解析包含多个JSON条目的文件

在Scala中解析包含多个JSON条目的文件,json,scala,Json,Scala,我有一个JSON文件,我正试图用Scala解析它。我已经了解了如何使用ScalaJSON解析库以这种格式解析1个条目: {"name":"John","number":"005","fav_colour":"blue"} 这是有效的代码: val result = JSON.parseFull("""{"name":"John","number":"005","fav_colour":"blue"}""") result match { case Some(e) => printl

我有一个JSON文件,我正试图用Scala解析它。我已经了解了如何使用ScalaJSON解析库以这种格式解析1个条目:

{"name":"John","number":"005","fav_colour":"blue"} 
这是有效的代码:

val result = JSON.parseFull("""{"name":"John","number":"005","fav_colour":"blue"}""")
result match {
  case Some(e) => println(e) 
  case None => println("Failed.")
}
这将打印
地图(姓名->约翰,号码->005,颜色->蓝色)

该代码基于以下内容:

但是,我使用的文件如下:

“{”姓名“:”约翰“,”号码“:”005“,”颜色“:”蓝色“} {“姓名”:“玛丽”,“号码”:“010”,“颜色”:“黄色”} {“姓名”:“安娜”,“编号”:“007”,“最喜欢的颜色”:“粉色”} {“姓名”:“戴夫”,“号码”:“003”,“最喜欢的颜色”:“紫色”}

“”“

注意,我也尝试过用逗号分隔,但仍然不起作用

我只是想知道我是否必须编写一个函数来分隔每个{bracketed entry},或者我是否缺少JSON库的某些功能。到目前为止,当我传入文件时,它返回的是一些(有效信息),而不是None


谢谢

您没有有效的Json文件。这将是有效的:

[
   {"name":"John","number":"005","fav_colour":"blue"},   
   {"name":"Mary","number":"010","fav_colour":"yellow"},
   {"name":"Anna","number":"007","fav_colour":"pink"}, 
   {"name":"Dave","number":"003","fav_colour":"purple"}
]
结果:
一些(列表(地图(姓名->约翰,号码->005,彩色->蓝色),地图(姓名->玛丽,号码->010,彩色->黄色),地图(姓名->安娜,号码->007,彩色->粉色),地图(姓名->戴夫,号码->003,彩色->紫色))


您使用的格式便于随时间收集信息,例如保存日志

您可以通过重用解析器组合器来解析它
例如:

import scala.util.parsing.json.JSON
val parseResult = JSON.rep1(JSON.root)(new JSON.lexical.Scanner("{\"a\": 1} {\"b\": 2}"))
parseResult match {case JSON.Success (result, _) => result; case _ => Nil}
返回

List({"a" : 1.0}, {"b" : 2.0})

我很确定这不符合JSON文件的条件。我知道,我意识到我的文件是一堆JSON文件,每行上都有一个不同的文件。这是我第一次和他们一起工作。我无法改变我所拥有的