从json中删除多个路径

从json中删除多个路径,json,playframework,playframework-2.0,Json,Playframework,Playframework 2.0,我试图从json转换器中删除多路径 因此,如果这是我的目标-这是有效的: { "a": { "field1": null, "field2": 123 } "b": { "b1": { "field1": null }, "b2": { "field1": null } } } 因此,如果这是我的目标-这失败了: { "a": { "field1"

我试图从json转换器中删除多路径

因此,如果这是我的目标-这是有效的:

{
  "a": {
      "field1": null,
      "field2": 123
  }
  "b": {
      "b1": {
           "field1": null
      },
      "b2": {
           "field1": null
      }
  }
}
因此,如果这是我的目标-这失败了:

{
  "a": {
      "field1": null,
      "field2": 123
  }
  "b": {
      "b1": null,
      "b2": {
           "field1": null
      }
  }
}
我正在尝试删除“field2”旁边的所有字段。 所以我写了这个:

((__ \ "a" \ "field1").json.prune andThen
  (__ \ "b" \ "b1" \ "field1").json.prune andThen
  (__ \ "b" \ "b2" \ "field1").json.prune)
我得到以下错误:

(/a/field1/b/b1/field1/b/b2/field1/b2/field1,List(ValidationError(List(error.expected.jsobject),WrappedArray())))
我还尝试:

((__ \ "a" \ "field1").json.prune and
  (__ \ "b" \ "b1" \ "field1").json.prune and
  (__ \ "b" \ "b2" \ "field1").json.prune) reduce
我得到以下两个错误:

(/b/b1/field1/b1/field1,List(ValidationError(List(error.expected.jsobject),WrappedArray())))
(/b/b2/field1/b2/field2,List(ValidationError(List(error.expected.jsobject),WrappedArray())))

我遗漏了什么?

对于您的示例Json对象,第一个transformer运行良好:
JsSuccess({“a”:{“field2”:123},“b”:{“b1”:{},“b2”:{}}}},/a/field1/b/b1/field1/b/b2/field1)
,第二个对于这一点无效。谢谢。。我更新了我的示例-问题是b1或b2的值为空@您的问题是删除空对象的字段(b.b1.field1,但b.b1为空)。请参见如何检查null或省略的属性。您希望删除此属性的任务是什么?对于您的示例Json对象,第一个transformer工作正常:
JsSuccess({“a”:{“field2”:123},“b”:{“b1”:{},“b2”:{}}},/a/field1/b/field1/b/b2/field1)
,第二个transformer对此无效。谢谢。。我更新了我的示例-问题是b1或b2的值为空@您的问题是删除空对象的字段(b.b1.field1,但b.b1为空)。请参见如何检查null或省略的属性。要删除此属性的任务是什么?