首页 > 解决方案 > 如何使用 jsonPath 从选择中排除字段

问题描述

我试图通过 jsonPath 表达式从 Json 中排除一些字段,但它不起作用。我无法正确编写仅匹配某些字段而不排除的表达式。

我曾尝试使用类似 $.personal.[?(!@.email)] 的方法,但它不起作用。

我有这样的json:

{
  "personal": {
    "fullName": "full Name",
    "firstName": "first Name",
    "email": "hello@email.com"
    }
}

我尝试使用这一行来选择没有电子邮件字段的字段:

$.personal.[?(!@.email)]

但我只得到这个结果或错误:

[
  "full Name",
  "first Name",
  "hello@email.com"
]

我想要这样的结果:

[
  "full Name",
  "first Name"
]

标签: json-path-expression

解决方案


据我所知,您不能排除某个属性(即黑名单方法),但您可以选择要包含的属性(即白名单方法)。

在第二种情况下,查询不会捕获您遗漏的任何属性。

所以在你的例子中,

$.personal.['fullname','firstname']

是你需要的。它不完全相同,因为您可能不提前知道属性名称


推荐阅读