正在尝试将json文件读入scala中的映射[字符串,对象]

正在尝试将json文件读入scala中的映射[字符串,对象],json,scala,apache-spark,Json,Scala,Apache Spark,我正在尝试将一个json配置文件读取到我的scala项目中。json的格式如下所示: { "parameters": [ { "name": "testInteger", "type": "Integer", "value": "10" }, { "name": "testString", "type": "String", "value": "yeah" } ] } 我一直在使用s

我正在尝试将一个json配置文件读取到我的scala项目中。json的格式如下所示:

{
  "parameters": [
    {
      "name": "testInteger",
      "type": "Integer",
      "value": "10"
    },
    {
      "name": "testString",
      "type": "String",
      "value": "yeah"
    }
  ]
}
我一直在使用spark生成数据帧

val df = spark.read.option("multiline","true").json(path)
我需要将json文件中的数据读入具有指定类型的键名和值的映射

预期产出:

Map: "testInteger" -> 10
     "testString" -> "yeah"
我是scala的新手,不知道从哪里开始,任何建议都将不胜感激


注意:使用Java 8和intellij编写

创建SparkSession, 创建模式, 读取数据集, 这将为您提供一个名为“params”的结构列,其中包含字段名称、类型和值。这看起来像,

root
 |-- params: struct (nullable = true)
 |    |-- name: string (nullable = true)
 |    |-- type: string (nullable = true)
 |    |-- value: string (nullable = true)

注意:所有结构和映射类型列都强制使用类型安全性。因此,架构不能在同一列中允许不同类型的值。这样,值字段中的所有值都将转换为字符串。根据您的用例,您可以使用udf在运行时使用字段类型强制转换内容。

您可以添加预期的输出吗?转换为map后,您希望执行什么操作。理想情况下,您希望成为testInteger->10,testString->yeahI应该澄清,可能会有多个map对象。在这种情况下,映射将被称为参数,并将字符串名称映射到指定类型的值。我需要有功能扩展,以包括更多的地图
val schema = new StructType().add(
"parameters",ArrayType.apply(
      new StructType()
          .add("name", "string")
          .add("type", "string")
          .add("value", "string")
       ))
 val df = spark.read
      .option("multiline", "true")
      .schema(schema)
      .json("/path/to/json")
      .select(explode(col("parameters")).alias("params"))
root
 |-- params: struct (nullable = true)
 |    |-- name: string (nullable = true)
 |    |-- type: string (nullable = true)
 |    |-- value: string (nullable = true)