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>
考虑下面的简单地图:
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>