首页 > 解决方案 > 使用 Scala 使用 Json Play 在 S3 上解析 Json 文件

问题描述

我想使用 json play fromework 从 S3 访问 json 文件

val creds:DefaultAWSCredentialsProviderChain = new DefaultAWSCredentialsProviderChain
val s3Client = new AmazonS3Client(creds)
val uri: AmazonS3URI = new AmazonS3URI(conf_file)
val s3Object: S3Object = s3Client.getObject(uri.getBucket, uri.getKey)

val json = Json.parse(s3Object.getObjectContent)

val mylist = (json \ "mydata").get.as[List[JsValue]]

但是这条线给出了一个错误

val mylist = (json \ "mydata").get.as[List[JsValue]]

作为

没有这样的元素“mydata”

谁能告诉如何访问 json 文件并使用 scala 中的 json play 读取其内容。

我能够从本地机器访问相同的文件,以及从 json 中获取“mydata”的内容

标签: scalaapache-sparkamazon-s3playframeworkplay-json

解决方案


您是否尝试先打印对象并检查它是否正确格式化为 JSON,因为对我来说一切正常。

val json: JsValue = Json.parse("""{
  "mydata": [
    {"first": "aa"},
    {"second": "bb"},
    {"third": "cc"}
  ]
}""")

尝试实现这样的东西。

(json \ "mydata").asOpt[Seq[JsValue]].getOrElse(None)

推荐阅读