首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WSO2-ESB 500/属性中介器xpath json

WSO2-ESB 500/属性中介器xpath json
EN

Stack Overflow用户
提问于 2020-12-23 11:47:33
回答 1查看 192关注 0票数 1

在我的序列中有一个至少包含这些信息的属性中介"customerData“:

代码语言:javascript
复制
{
  "key1": "value1",
  "key2": "value2", 
  ...
}

见日志:

代码语言:javascript
复制
DEBUG {org.apache.synapse.mediators.builtin.PropertyMediator} -  Setting property : customerData at scope : default to : 
{
    "key1":"value1",
    "key2":"value2",
    ...
} 
(i.e. result of expression : XX) {org.apache.synapse.mediators.builtin.PropertyMediator}

如何访问每个密钥的获取值?

我一开始尝试记录它们,但不能将这些属性解析为有效的json属性。

尝试使用thoses语法:

  • $ctx:customerData//key1/text()
  • json-eval(customerData.key1)
  • json-eval(get-property('customerData').key1)
  • //key1/text()
  • ...

非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2021-01-08 09:17:59

据我所知,不可能在json评估中引用属性。您可以做的是使用customerData mediator1将“mediator1”属性设置为当前消息上下文,然后使用jsonpath检索数据。

例如:

代码语言:javascript
复制
<payloadFactory media-type="json">
    <format>
    $1
    </format>
    <args>      
        <arg evaluator="xml" expression="$ctx:customerData")/>
    </args>
</payloadFactory>

之后,您应该能够检索您正在寻找的数据:

<property name="customerDataLine" expression="json-eval($.key1)"/>

另外,如果您不想丢失当前上下文中的消息,可以将其临时保存到一个属性中,并将其放入上下文中。2

另一种可能的选择是将属性的“类型”设置为"OM",然后用xpath直接将数据检索为xml也可能有效。类似于:

<property name="customerDataLine" expression="$ctx:customerData/key1"/>

1

2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65423806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档