【问题标题】:getPayloadJSON returning an empty objectgetPayloadJSON 返回一个空对象
【发布时间】:2016-11-02 08:28:48
【问题描述】:

我正在做一些非常简单的脚本调解作为测试,看看我是否可以更改服务器返回的有效负载。

我的无中介有效载荷如下:

{"origin":"202.37.75.130"}

然后我尝试做一个非常简单的检查,看看 get 和 set 是否适用于有效载荷:

<script language="js">
    var older = mc.getPayloadJSON(); 
    var newer=older; 
    mc.setPayloadJSON(newer);           
</script> 

我的结果是:

{"jsonObject":""}

我已经完成测试,表明 setPayloadJSON() 有效,这意味着我的 getPayloadJSON 必须返回一个空对象。

查看日志文件显示:

ERROR {org.apache.synapse.mediators.bsf.ScriptMessageContext} -  JSON object is null. {org.apache.synapse.mediators.bsf.ScriptMessageContext}

还有其他人有这个错误吗?

【问题讨论】:

    标签: wso2 wso2esb wso2carbon wso2-am


    【解决方案1】:

    以防万一有人遇到同样的问题,我设法让我的工作正常。

    我不得不做一个解决方法:

    1. 在脚本中介之前使用属性中介来设置属性:

    属性名称="JSONPayload" 表达式="json-eval($.)"

    1. 在脚本中介中,通过执行以下操作获取有效负载(作为字符串):

    var pl_string = mc.getProperty("JSONPayload");

    1. 现在必须将字符串转换为 JS 对象:

    var pl = JSON.parse(pl_string);

    1. 像使用 getPayloadJSON() 获得它一样操作有效负载。

    我知道这是一种组合在一起的方法,但其他方法都不适合我,所以我尝试了这个。

    如果有人想调试它的一些信息:

    我正在使用 API Manager 1.7。

    我将消息构建器和格式化程序设置为: 生成器类 =“org.apache.synapse.commons.json.JsonStreamBuilder” 格式化程序类 = "org.apache.synapse.commons.json.JsonStreamFormatter"

    【讨论】:

      【解决方案2】:

      希望https://github.com/asanka88/ForcefulJsonConvertor可以帮助您解决问题。 我相信它会的。我写这篇文章是为了解决和你一样的问题。

      谢谢

      【讨论】:

      • 看看我下面的回答;它解决了我的问题。
      【解决方案3】:

      最近我需要将事件添加到有效负载 json 数据以发送到队列。下面是为我工作的脚本。

      <property name="JSONPayload" expression="json-eval($.)"/>
                <script language="js">
                          <![CDATA[
                          var pl_string = mc.getProperty("JSONPayload");
                          var newPayload="{\"event\": " + pl_string + "}";
                          mc.setPayloadJSON(newPayload);
                       ]]>
                  </script>
      <log level="full" />
      

      【讨论】:

        猜你喜欢
        • 2021-03-31
        • 2014-07-15
        • 2018-08-25
        • 2020-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-24
        相关资源
        最近更新 更多