如何使用 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

完全不知道怎么组合

顺便说一句,有没有更简单的 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