そのため、現時点ではいくつかのトークン フィルタリングに取り組んでおり、SelectTokens() メソッドを使用して C# のフィルター条件に基づいてトークンをフィルター処理する必要がある状況があります。単一の値がクエリに一致する場合、私は簡潔にするために、すべてのオブジェクトおよび/またはルート要素が必要です。これは、フィルタリングを適用する基になる配列の1つです。
[
{
"unitPrice": 5
},
{
"unitPrice": 13
}
]
たとえば、単一の値が 10 を超える場合、その配列内のすべての要素が必要であり、それ以外の場合は戻り値が必要ないため、次のようなクエリを使用する場合: $[?($[?(@.unitPrice >= 10)] empty false)]
SelectTokens() 呼び出しで、まったく同じリストが返されるか、比較値が 13 を超える場合は空の配列を取得します。
この例は、 https: //jsonpath.herokuapp.com/ などの特定のテスターでクエリを実行すると問題なく動作しますが、他のほとんどのテスターや自分の C# コードでは無効に見えるため、これを取得するための他の方法を見つけようとしました。同じクエリ機能であり、この機能を実装する有効な方法を見つけるたびに、Newtonsoft.Json.Linq.SelectTokens()
使用している実際のメソッド内では機能しないことがわかります。
実際のクエリ内で演算子を使用しようとすると、$
newtonsoft の jsonpath の実装内で動作することを拒否するだけのようで、私と同じことを達成しようとしている人を見つけることができないようです。 newtonsoftの実装で動作するこれを達成する簡単な方法があれば.
これは、配列ではなく単一のトークン用ですが、私がやろうとしていることに最も近いものですが、それも特定のテスター内でのみ機能します