1

PHPでJSONPathを使用していますが、containsフィルター "contains(dept、'Management')"と同等のxpathが必要です。

私は次の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);
4

2 に答える 2

2

これを見てください

JSONPath:フィルターを含む

私はあなたの場合のようなものになると思います。

"$..members[?(/Management/.test(@['department']))";
于 2011-04-22T12:49:16.823 に答える
0

私はなんとかこれを理解することができました。PHP strposを使用する例がhttp://jsonpath.googlecode.com/svn/trunk/tests/jsonpath-test-php.phpにありますが、これは最初にjsonpath-0.8.1.phpを使用した場合は機能しませんでした。 。

私はjsonpath-0.8.3.phpにリポジトリを見つけ、strpos式が完全に機能するようにしました:-

$..members[?(@ && @['department'] && strpos(@['department'],'".$dept."')!==false)]

関数evalx()にはエラーを引き起こす3番目のパラメーターがあり、値をnullに設定すると正常に機能することに注意してください。http://code.google.com/p/jsonpath/issues/detail?id=8を参照してください。

function evalx($x, $v, $vname=null)
于 2011-04-27T08:45:46.620 に答える