我正在与一个具有简单JSON对象有效负载的web钩子集成。我希望使用JMESPath表达式将提供的JSON对象有效负载中的某些值映射到数据模式中的有效值。
因此,例如,如果提交的数据是{"contact": "Text message"}或{"contact": "Phone call"},我希望退出JMESPath表达式"phone",如果"contact"不是这两个值之一,我希望从JMESPath表达式"email"中退出。
对于如何在提供对象的顶层进行这样的条件字符串替换,有什么建议吗?
发布于 2022-01-06 21:40:53
理论上,您可以构建JMESPath表达式,如果文本是您所期望的,那么它将返回true;对于其他情况,可以构建false。
下面是一个使用JMESPath函数和OR表达式的示例:[contact.contains(@,'Text message')||contact.contains(@,'Phone call')]
为了分解事情,让我们看看它在Python控制台中是如何工作的:
>>> text=[{"contact": "other"}]
>>> text
[{'contact': 'other'}]
>>> jmespath.search("[*][contact.contains(@,'Text message')||contact.contains(@,'Phone call')]", text)
[[False]]
>>> text=[{"contact": "Text message"}]
>>> text
[{'contact': 'Text message'}]
>>> jmespath.search("[*][contact.contains(@,'Text message')||contact.contains(@,'Phone call')]", text)
[[True]]
>>> text=[{"contact": "Phone call"}]
>>> text
[{'contact': 'Phone call'}]
>>> jmespath.search("[*][contact.contains(@,'Text message')||contact.contains(@,'Phone call')]", text)
[[True]]我希望这对你有一点帮助:)
如果您想通过示例和推荐工具了解更多关于JMESPath的信息,请查看这里。
https://stackoverflow.com/questions/68538114
复制相似问题