camel-jsonpath用路径过滤classname

时间:2017-03-15 08:58:52

标签: json apache-camel jsonpath

我用类过滤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不起作用,有没有解决方法。

1 个答案:

答案 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表达式中转义运算符的信息。