【问题标题】:Scala read file and load in list as json objectScala读取文件并作为json对象加载到列表中
【发布时间】:2016-08-01 22:04:00
【问题描述】:

我正在尝试使用 Scala 读取 csv 文件并将输出存储为 Json 列表 (list(json.obj))。

这是我的代码:

def index = Action {
  Logger.info("Application startup...")
  var posts = List(Json.obj())
  var finalPost = List(Json.obj())
  val bufferedSource = Source.fromFile("/Users/manujkathuria/a.csv")
  for (line <- bufferedSource.getLines) {
    val cols = line.split(",").map(_.trim)
    posts = List(
      Json.obj(
        "name" -> cols(0),
        "age" -> cols(1),
        "job" -> cols(2)
      ))
    finalPost +: posts
  }
  bufferedSource.close
}

所以我的目标是存储我从 .csv 文件中读取的数据并将其加载到 jsonObjects 列表中,稍后我将使用该列表加载到 MongoDB 中。

【问题讨论】:

  • 谢谢@marcospereira

标签: json mongodb scala playframework


【解决方案1】:

您应该尽可能避免使用变量。我认为更好的解决方案可能是

def index = Action {
  Logger.info("Application startup...")
  val json = parse("/Users/manujkathuria/a.csv")
  ... 
}
def parse(file:String): List[Json] = {
  val bufferedSource = io.Source.fromFile(file)
  try {
    bufferedSource.getLines().map(line => {
      val cols = line.split(",").map(_.trim)
      Json.obj(
        "name" -> cols(0),
        "age" -> cols(1),
        "job" -> cols(2)
      )
    }).toList
  } finally
    bufferedSource.close
}

【讨论】:

    【解决方案2】:

    @Mikel 现在可以工作了。感谢您的建议。

    val surveyDB = parse("/Users/manujkathuria/a.csv")
    
    def parse(file: String): List[JsObject] = {
    
         val bufferedSource = Source.fromFile(file)
         try {
         bufferedSource.getLines().map(line => {
         val cols = line.split(",").map(_.trim)
         Json.obj("name" -> cols(0), "age" -> cols(1), "job" -> cols(2))
         }).toList
         } finally
        bufferedSource.close
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多