jsonPath では、いくつかの値でオブジェクトをフィルタリングしようとしています。考えられる値の 1 つは、電子メール アドレスです。@ は現在のオブジェクトへのポインタとして使用されているため、失敗しています。
json 文字列の例
{
"report": {
"Author": [
{
"value": "John",
"count": "58",
"fields": [
{
"key": "FileSize",
"value": "12314"
},
{
"key": "Date",
"value": "2000-01-01"
}
]
},
{
"value": "Jane",
"count": "1",
"fields": [
]
},
{
"value": "Foo@bar.com",
"count": "58",
"fields": [
{
"key": "FileSize",
"value": "12314"
},
{
"key": "Date",
"value": "2000-01-01"
},
{
"key": "tags",
"value": "a,b,c,d"
}
]
},
{
"value": "Bill",
"count": "2",
"fields": [
{
"key": "FileSize",
"value": "14"
}
]
}
]
}
}
使用する場合
$.report.Author[?(@.value==='John')]
結果は
"[{"value":"John","count":"58","fields":[{"key":"FileSize","value":"12314"},{"key":"Date","value":"2000-01-01"}]}]"
しかし、電子メール アドレスには @ 記号があるため、jsonPath は false を返します。
$.report.Author[?(@.value==='Foo@bar.com')]
@ 記号をエスケープする方法またはオブジェクトを評価するためのdiffernetメソッドを知っている人はいますか?