我使用JSONPath和PHP,我需要xpath等效于包含过滤器,“contains(dept,'Management')”;
我有以下JSON,我想只将工作人员过滤到管理部门。如果部门节点只包含1个部门,那么这没问题,但我需要在部门字符串中找到关键字吗?
任何帮助都将不胜感激。
{
"staff": {
"members": [
{
"firstname": "J",
"lastname": "H",
"department": "Management, Finance"
},
{
"firstname": "S",
"lastname": "M",
"department": "Finance"
}
]
}
}
$parser->setPath("$..members[?(@['department']=='Management')]");
$staff = $parser->getData();
var_dump($staff);
答案 0 :(得分:2)
答案 1 :(得分:0)
我设法解决了这个问题。在http://jsonpath.googlecode.com/svn/trunk/tests/jsonpath-test-php.php中有一些使用PHP strpos的例子,但这对我来说最初使用jsonpath-0.8.1.php不起作用。
我给了jsonpath-0.8.3.php找到了存储库,并且strpos表达式完美运行: -
$..members[?(@ && @['department'] && strpos(@['department'],'".$dept."')!==false)]
注意,函数evalx()有第三个参数导致错误,将值设置为null工作正常,请参阅http://code.google.com/p/jsonpath/issues/detail?id=8
function evalx($x, $v, $vname=null)