嘿所有,我想知道是否有人知道如何使用正则表达式或通配符运算符(或SQL中的pehaps '%LIKE%'
),因此我可以使用JSONPath在一大组JSON数据中进行搜索。
例如(是的,我正在解析,而不是在应用程序中eval( )
我的数据):
var obj = eval ( '({ "hey": "can you find me?" })' );
我希望能够查看这样的数据:
$.[?(@.hey:contains(find))] // (in jQuery terminology)
其中参数的内容是我数据中{ "key" : "value" }
对中的部分或全部值。
目前我只在>
,<
,=
和!=
关系运算符上找到了文档,这些文档并没有给我足够的灵活性。< / p>
有没有人知道我可以只是 JSONPath找到这些数据的方式(无需遍历所有条目)?
我不想使用Dojo的JSONQuery,因为这需要另一个库。但是,它允许你这样做,这里是他们的例子:
[?description~‘*the*’]
问我是否想要更多澄清这个问题。
答案 0 :(得分:14)
$.[?(/find/.test(@.hey))]
RegExp test()方法(JSONPath eval
在幕后)。
如果有人有更好的答案,请告诉我。
答案 1 :(得分:3)
此外,它可能对某人有用。 Link to JSONPath Notation
它适用于我(JMeter 4.0)
=~
匹配JavaScript正则表达式。例如,[?(@。description =〜/ cat.* / i)]匹配描述以cat开头的项(不区分大小写)。
答案 2 :(得分:1)
如果有人想要Java中的contains解决方案,那么这适用于JsonPath
Filter<?> filter = Filter.filter(Criteria.where("hey").regex(Pattern.compile(".*find.*")));
System.out.println(JsonPath.read(json, "$..[?]", filter));
进口
import com.jayway.jsonpath.Criteria;
import com.jayway.jsonpath.Filter;
import com.jayway.jsonpath.JsonPath;
答案 3 :(得分:1)
=〜为我工作。 经过Jmeter 5.3 JSON提取器测试。