有一个超过10000行的json文件。您可以在下面看到数据格式:
{"id":1,"child_id":1822925634,"parent_id":-1,"name":"victor"}
{"id":2,"child_id":1266710134,"parent_id":25,"name":"victor"}
{"id":3,"child_id":572534000,"parent_id":-1,"name":"simone"}
.
.
.
{"id":10575,"child_id":572534781,"parent_id":135,"name":"victor"}
我想过滤 parent_id 等于 -1 的所有行。
首先,我的代码读取文件内容,然后按换行符拆分。
val file = new File("./myFile.json")
val jsonContent = FileUtils.readFileToString(file)
JSON.globalNumberParser = {input : String => Integer.parseInt(input)}
val jsonArray = jsonContent.split("\n").map(x=>JSON.parseFull(x).get.asInstanceOf[Map[String,String]])
到目前为止,我有一个带有4个键值对的地图对象(到目前为止一切正常)。要进行一点调试, temp 会按预期返回"某些(-1)" 。
val temp = jsonArray(2).get("parent_id")
现在,我想根据 parent_id
过滤 jsonArrayval selectedRows = jsonArray.filter(_.get("parent_id")=="-1").map(_.get("name"))
但它返回一个空的地图对象。问题是方程式不满意。我试过了(" parent_id")== " -1" 或"一些(-1)" 或一些(" -1")
答案 0 :(得分:1)
Map.get
会返回Option
,因此您的表达式_.get("parent_id")=="-1"
始终为false
。
您需要将其转换为_.get("parent_id") == Some(-1)
。