使用 json4s 从 json 字符串中提取键
extracting keys from json string using json4s
谁能告诉我如何使用 json4s 从 json 中提取密钥。
我的用例:
json 在 scala 变量中存储为字符串:
{
"key1" : "val1",
"key2" : ["12", "32"],
"key3" : {"keyN" : "valN"}
}
我想将其转换为以下 Map[String, String]:
(key1 -> "val1", key2 -> "[\"12\",\"32\"]", key3 -> "{\"keyN\":\"valN\"}"
是否有使用 json4s 实现此目的的简单方法?
提前致谢
val result: Map[String, String] = parse( """ {
| "key1" : "val1",
| "key2" : ["12", "32"],
| "key3" : {"keyN" : "valN"}
| }""".stripMargin).mapField(k => {
val v: String = k._2 match {
case s: JString => k._2.extract[String]
case _ => write(k._2)
}
(k._1, JString(v))
}).extract[Map[String, String]]
println(result)
您可以使用 mapField
将 JValue
映射到 String
- 如果值的类型是
String
只需提取为 String
- 如果值的类型是其他类型,使用
json4s
将其解析为 JSON
字符串
- 最后将
JValue
提取为 Map[String, String]
。
implicit val formats = DefaultFormats
val a = parse(""" { "numbers" : [1, 2, 3, 4] } """)
println(a.extract[Map[String, Any]].keySet)
谁能告诉我如何使用 json4s 从 json 中提取密钥。 我的用例: json 在 scala 变量中存储为字符串:
{
"key1" : "val1",
"key2" : ["12", "32"],
"key3" : {"keyN" : "valN"}
}
我想将其转换为以下 Map[String, String]:
(key1 -> "val1", key2 -> "[\"12\",\"32\"]", key3 -> "{\"keyN\":\"valN\"}"
是否有使用 json4s 实现此目的的简单方法? 提前致谢
val result: Map[String, String] = parse( """ {
| "key1" : "val1",
| "key2" : ["12", "32"],
| "key3" : {"keyN" : "valN"}
| }""".stripMargin).mapField(k => {
val v: String = k._2 match {
case s: JString => k._2.extract[String]
case _ => write(k._2)
}
(k._1, JString(v))
}).extract[Map[String, String]]
println(result)
您可以使用 mapField
将 JValue
映射到 String
- 如果值的类型是
String
只需提取为 String - 如果值的类型是其他类型,使用
json4s
将其解析为JSON
字符串 - 最后将
JValue
提取为Map[String, String]
。
implicit val formats = DefaultFormats
val a = parse(""" { "numbers" : [1, 2, 3, 4] } """)
println(a.extract[Map[String, Any]].keySet)