如何将嵌套的 Json 字符串转换为播放中的 Json 结构 json
How to convert nested Json String to Json struct in play json
我正在尝试使用 play json 库 update
方法将嵌套的 json 字符串转换为 Json 结构。但我无法获得正确的语法。有人可以帮我吗?我在 https://www.playframework.com/documentation/2.5.x/ScalaJsonTransformers
中使用更新方法
例如:我有示例输入 json
{
"key1": "value",
"key2": {
"key3": {
"key4": "{\"value1\":100, \"value2\":200}"
}
}
}
预期的输出应该是:
{
"key1": "value",
"key2": {
"key3": {
"key4": {"value1":100, "value2":200}
}
}
}
有关 update
的文档,请参阅 。在您的情况下,我们假设 json 字符串存储在 jsonString
,因此我们解析它:
val json = Json.parse(jsonString)
现在我们需要定义一个 reader,它将知道将路径 __ \ "key2" \ "key3" \ "key4"
处的字符串转换为 JsObject
,并保持所有其他字段相同。所以我们声明这样一个 reader:
val jsPath = JsPath \ "key2" \ "key3" \ "key4"
implicit val reads: Reads[JsObject] = jsPath.json.update(__.read[JsString].map{o => Json.parse(o.value)})
那么用法就很简单了:
val result = json.validate[JsObject] match {
case JsSuccess(value, _) =>
println(value)
case JsError(errors) =>
println(errors)
}
代码 运行 在 Scastie。
我正在尝试使用 play json 库 update
方法将嵌套的 json 字符串转换为 Json 结构。但我无法获得正确的语法。有人可以帮我吗?我在 https://www.playframework.com/documentation/2.5.x/ScalaJsonTransformers
例如:我有示例输入 json
{
"key1": "value",
"key2": {
"key3": {
"key4": "{\"value1\":100, \"value2\":200}"
}
}
}
预期的输出应该是:
{
"key1": "value",
"key2": {
"key3": {
"key4": {"value1":100, "value2":200}
}
}
}
有关 update
的文档,请参阅 jsonString
,因此我们解析它:
val json = Json.parse(jsonString)
现在我们需要定义一个 reader,它将知道将路径 __ \ "key2" \ "key3" \ "key4"
处的字符串转换为 JsObject
,并保持所有其他字段相同。所以我们声明这样一个 reader:
val jsPath = JsPath \ "key2" \ "key3" \ "key4"
implicit val reads: Reads[JsObject] = jsPath.json.update(__.read[JsString].map{o => Json.parse(o.value)})
那么用法就很简单了:
val result = json.validate[JsObject] match {
case JsSuccess(value, _) =>
println(value)
case JsError(errors) =>
println(errors)
}
代码 运行 在 Scastie。