我用类过滤json类名的路径是
<route>
<from uri="file:D:/inputFolder/jsonpath"/>
<choice>
<when>
<jsonpath>$..com.mycompany.app10.Person</jsonpath>
<to uri="file:D:/inputFolder/jsonpath/output"/>
</when>
</choice>
</route>
我的示例输入是
{"com.mycompany.app10.Person":{"firstName":"Gregory","surname":"Smith","type":"FAMILY"}}
在我的路线中,如果我使用&#34; $ .. Person&#34;在json路径中,我的输入是
{&#34;人&#34; {&#34;的firstName&#34;:&#34;格雷戈里&#34;&#34;姓&#34;:&#34;史密斯&#34 ;, &#34;输入&#34;:&#34; FAMILY&#34;}}
工作正常!!
但带路径的classname不起作用,有没有解决方法。
答案 0 :(得分:0)
点是JSONPath表达式中的运算符。如果要匹配名称中包含点的元素,例如com.mycompany.app10.Person
,则需要转义表达式中的点。
$..Person
永远不会匹配com.mycompany.app10.Person
。要匹配的元素是完全限定的类名。点是元素名称的一部分,与JSON文档的结构无关。
如果要匹配类名,则需要将JSONPath表达式更改为$..['com.my.company.app10.Person']
。或$['com.my.company.app10.Person']
,因为类名是根。
另请参阅此SO thread有关JSONPath表达式中转义运算符的信息。