JSONPath での LLD マクロ値における特殊文字のエスケープ

低レベルディスカバリのマクロが JSONPath の前処理で使用され、その値が解決されると、次の特殊文字のエスケープ規則が適用されます。

  • エスケープ対象として考慮されるのは、バックスラッシュ (\) と二重引用符 (") のみです。
  • 解決されたマクロ値にこれらの文字が含まれている場合、それぞれにバックスラッシュを付けてエスケープします。
  • すでにバックスラッシュでエスケープされている場合でも、それはエスケープ済みとは見なされず、バックスラッシュとその後ろの特殊文字の両方が再度エスケープされます。

例:

JSONPath LLD macro value After substitution
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")]
c:\temp $.[?(@.value == "c:\\temp")]
a\\b $.[?(@.value == "a\\\\b")]

式で使用する場合、特殊文字を含む可能性のあるマクロは二重引用符で囲む必要があります。

JSONPath LLD macro value After substitution Result
$.[?(@.value == "{#MACRO}")] special "value" $.[?(@.value == "special \"value\"")] OK
$.[?(@.value == {#MACRO})] $.[?(@.value == special \"value\")] Bad JSONPath expression

パスで使用する場合、特殊文字を含む可能性のあるマクロは、角括弧 および 二重引用符で囲む必要があります。

JSONPath LLD macro value After substitution Result
$.["{#MACRO}"].value c:\temp $.["c:\\temp"].value OK
$.{#MACRO}.value $.c:\\temp.value Bad JSONPath expression