ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-12-21 12:00:20  阅读:207  来源: 互联网

标签:String scala 符合要求 pid json import txt


 

目的

    从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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有