json-path-expression - 如何使用 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"
]
解决方案
据我所知,您不能排除某个属性(即黑名单方法),但您可以选择要包含的属性(即白名单方法)。
在第二种情况下,查询不会捕获您遗漏的任何属性。
所以在你的例子中,
$.personal.['fullname','firstname']
是你需要的。它不完全相同,因为您可能不提前知道属性名称
推荐阅读
- .net - .Net 2.0 到 .Net 4.7.1 的迁移
- c# - 反序列化的问题
- java - 为什么这里需要“String.class”?
- node.js - 如何在node.js中为jade中的每个循环制作
- ckan - 停止/启动ckan docker容器后“未找到数据集”
- ssas - SSAS表格模型:具有相同维度表的两个关系
- redirect - AWS Cognito 电子邮件确认未重定向到我的网站
- git - GIT 将分支代码与最新的修补程序代码合并
- sql - 如何使用 sql select 语句中的列将公式写为列
- python - 熊猫数据框函数返回日期最近的行并且其中一列包含输入值,抛出错误