我正在做一些非常简单的脚本中介作为测试,看看我是否可以更改我的服务器返回的有效负载。
我的无中断有效载荷如下:
{"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}
还有其他人有此错误吗?
答案 0 :(得分:4)
万一有人遇到同样的问题,我设法让我的工作。
我必须做一个解决方法:
属性名称=&#34; JSONPayload&#34;表达式=&#34; JSON-的eval($。)&#34;
var pl_string = mc.getProperty(&#34; JSONPayload&#34;);
var pl = JSON.parse(pl_string);
getPayloadJSON()
我知道这是一个被黑客攻击的方法,但其他方式都没有为我工作所以我尝试了这个。
有些人希望调试它的信息:
我正在使用API Manager 1.7。
我将消息构建器和格式化程序设置为: Builder class =&#34; org.apache.synapse.commons.json.JsonStreamBuilder&#34; Formatter class =&#34; org.apache.synapse.commons.json.JsonStreamFormatter&#34;
答案 1 :(得分:0)
希望https://github.com/asanka88/ForcefulJsonConvertor可以帮助您解决问题。 而且我相信它会。我写这篇文章是为了克服与你相同的问题。
由于
答案 2 :(得分:0)
最近我需要向有效负载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" />