【问题标题】:camel-jsonpath to filter classname with pathcamel-jsonpath 用路径过滤类名
【发布时间】:2017-03-15 08:58:51
【问题描述】:

我用类过滤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"}}

在我的路线中,如果我在 json 路径中使用“$..Person”并且我的输入是

{"Person":{"firstName":"Gregory","surname":"Smith","type":"FAMILY"}}

一切正常!!

但是带有路径的类名不起作用,是否有任何解决方法。

【问题讨论】:

    标签: json apache-camel jsonpath


    【解决方案1】:

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

    【讨论】:

    • 如果我使用建议的 JSONPath 表达式,例如 $..['com.my.company.app10.Person']$[' com.my.company.app10.Person'] 两者都不起作用
    • 可能是Camel的实现?我验证它在这里工作:https://jsonpath.curiousconcept.com/
    • 我检查了我的输入 {"com.mycompany.app10.Person":{"firstName":"Gregory","surname":"Smith","type":"FAMILY"}}它不工作。您尝试过的输入是什么。
    • 我尝试了您在问题中提供的 JSON,它有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2023-03-09
    • 2023-03-06
    • 2011-01-01
    • 1970-01-01
    相关资源
    最近更新 更多