如何使用 scala play json 替换 json 中的值
How to replace value in json using scala play json
我正在玩 scala 2.6.10
我有一个 json:
{"_id": {"$oid": "VALUE"}, "anotherField": "anotherValue"}
目标是摆脱 {"$oid": "VALUE"}
并将 "VALUE"
作为 "_id"
字段的值。
预期结果:
{"_id": "VALUE", "anotherField": "anotherValue"}
试过这个:
https://www.playframework.com/documentation/2.8.x/ScalaJsonTransformers
完全不知道怎么组合
- 提取特定分支值
- JsObject 的“修剪”
- “更新”用 JsString 删除了 JsObject。
顺便说一句,有没有更简单的 API 可以做到这一点?这个太复杂了。
您可以在 阅读有关更新文档的更多信息 在您的示例中,您可以这样做:
val jsonString = """{"_id": {"$oid": "VALUE"}, "anotherField": "anotherValue"}
|""".stripMargin
val jsonTransformer = (__ \ "_id").json.update(__.read[JsObject].map { _ => JsString("Value") })
Json.parse(jsonString).transform(jsonTransformer) match {
case JsSuccess(value, _) =>
println(value)
case JsError(errors) =>
println(errors)
}
它输出:
{"anotherField":"anotherValue","_id":"Value"}
代码 运行 在 Scastie。
我正在玩 scala 2.6.10 我有一个 json:
{"_id": {"$oid": "VALUE"}, "anotherField": "anotherValue"}
目标是摆脱 {"$oid": "VALUE"}
并将 "VALUE"
作为 "_id"
字段的值。
预期结果:
{"_id": "VALUE", "anotherField": "anotherValue"}
试过这个: https://www.playframework.com/documentation/2.8.x/ScalaJsonTransformers
完全不知道怎么组合
- 提取特定分支值
- JsObject 的“修剪”
- “更新”用 JsString 删除了 JsObject。
顺便说一句,有没有更简单的 API 可以做到这一点?这个太复杂了。
您可以在
val jsonString = """{"_id": {"$oid": "VALUE"}, "anotherField": "anotherValue"}
|""".stripMargin
val jsonTransformer = (__ \ "_id").json.update(__.read[JsObject].map { _ => JsString("Value") })
Json.parse(jsonString).transform(jsonTransformer) match {
case JsSuccess(value, _) =>
println(value)
case JsError(errors) =>
println(errors)
}
它输出:
{"anotherField":"anotherValue","_id":"Value"}
代码 运行 在 Scastie。