其他分享
首页 > 其他分享> > scala 解析json并提取符合要求的数据

scala 解析json并提取符合要求的数据

作者:互联网

 

目的

    从json文件(result.txt 一行一个json)中提取 该json的pid字段 在文件need.txt 中行 // 即 每行json解析后提取pid看在不在need.txt里面

    知识点: 1 scala 文件读写 2 play框架解析json

代码

package ceshi

import java.io.{File, PrintWriter}
import scala.io.Source
import play.api.libs.json._
import scala.collection.mutable.ListBuffer

object ExtractData {
  def main(args: Array[String]): Unit = {
    val writer = new PrintWriter(new File("C:/Users/thomas.y/Desktop/tmp./提取结果.txt"))
    // 项目需要的pid
    val needList = Source.fromFile(raw"C:/Users/thomas.y/Desktop/tmp./need.txt").getLines().toList
    println(needList)
    /**
     * name10
     * name1
     */

    // 所有pid数据 文本每行都是要给json 
    val jsonlines = Source.fromFile(raw"C:/Users/thomas.y/Desktop/tmp./result.txt").getLines().toList
    /**
     * {"title":"asdfasf","pid":"name1","value":"1212"}
     * {"title":"dfgyjgxc","pid":"name3","value":"2323"}
     */

    val resList: ListBuffer[String] = ListBuffer()
    // 提取need.txt里面项目需要的pid内容
    jsonlines.foreach(
      x => x match {
        case data: String if needList.contains((Json.parse(data) \ "pid").as[String]) => resList.append(data)
        case _ =>
      }
    )

    resList.sortBy(x => (Json.parse(x) \ "pid").as[String]).foreach(x => writer.write(x + "\n")) // 排序方便阅读

    writer.close() // 不close会丢失缓冲区数据
    // 最终结果样式 提取结果.txt
    /**
     * {"title":"asdfasf","pid":"name1","value":"1212"}
     */
  }

}

 

标签:String,scala,符合要求,pid,json,import,txt
来源: https://blog.csdn.net/qq_35515661/article/details/111470702