Scala - 将 Map 转换为 Json 避免 key/value 关键字

Scala - Convert Map to Json avoiding key/value keywords

考虑下面的简单地图:

val myTable:Map[String,Any] = Map(
"Table1" -> Array(
    Map("date" -> "2019"),
    Map("FilePath" -> "C:/Test")
))

我尝试使用以下命令将其写入 JSON 文件:

import java.io.{File,FileWriter,Writer}
import org.apache.spark.sql.SparkSession
import com.google.gson.Gson
import com.google.gson.GsonBuilder

val gson: Gson = new GsonBuilder().setPrettyPrinting().serializeNulls().create()
val json =  gson.toJson(myTable)
val w: Writer = new FileWriter("C:/Test/output.json")
w.write(json)
w.close()

我在json文件中得到的内容如下:

{
"key1": "Table1",
"value1": [
{
  "key1": "date",
  "value1": "2019"
},
{
  "key1": "FilePath",
  "value1": "C:/Test"
}
]
}

我想知道是否可以排除 "key1"、"value1" 单词,而是将它们的实际值打印到文件中(请参见下面的结构):

{
"Table1": {
"date": "2019",
"FilePath": "C:/Test"
}
}

如果相关,我使用的是 maven 而不是 sbt。

试试这个:

import play.api.libs.json.Json

object JsonToString extends App {
  val myTable = Map(
    "Table1" -> Array(
      Map("date" -> "2019"),
      Map("FilePath" -> "C:/Test")
))

val jsonObject = Json.toJson(myTable)
println(jsonObject)

}

它应该删除 key1、value1 词,而是使用它们的实际值。以下是您需要添加的 Maven 依赖列表。

<dependency>
    <groupId>com.typesafe.play</groupId>
    <artifactId>play-json_2.10</artifactId>
    <version>2.4.0-M1</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.10.0</version>
</dependency>