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