检查是否具有价值

检查是否具有价值

问题描述:

JSON containts节点我有Java应用程序,它可以获取JSON字符串像这样的检查是否具有价值

{ 
    "name": "testName", 
    "message": [ 
     "TestMessage." 
    ] 
} 

我需要的是检查是否存在具有的TestMessage的“价值“消息”数组节点。 “在它的任何元素。

我有权访问我的代码中的com.jway.jsonpath.JsonPath。但它看起来只能读取特定节点的值。例如。这样我就能获取“消息”数组

JsonPath.read(content, "$.message[0]") 

的第一要素,但以这种方式,我将不得不获取数组转换成Java中的所有元素,并验证它们在那里。 相反,我想通过JsonPath引擎本身执行此检查。

我该如何用JsonPath实现这个目标?使用其他库更好吗?

您可以使用过滤器操作。

过滤器是用于过滤数组的逻辑表达式。一个典型的过滤器是[?(@。age> 18)],其中@表示当前正在处理的项目。使用逻辑运算符& &和||可以创建更复杂的过滤器。字符串文字必须用单引号或双引号([?(@。color =='blue')]或[?(@。color ==“blue”)])括起来。

这样的:

JsonPath.read(json, "$.message[?(@ == "TestMessage.")]"); 

更多可以参考的https://github.com/json-path/JsonPath

+0

的readme.MD谢谢你的答案。我可以看到它在这里工作https://jsonpath.herokuapp.com/。但它不适用于我的应用程序和https://jsonpath.curiousconcept.com/。我使用的json-path的版本是2.0.0。你知道我是否应该使用任何特定的版本?或者什么可能是它不工作的原因? – Bogdan

+0

好吧,我切换到最新的jway版本,它现在是2.4.0。非常感谢您的帮助! – Bogdan