You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WSO2 EI中如何获取响应中的单个整数值

这个问题我之前在处理WSO2 EI的JSON响应时也碰到过,纯数字这类JSON原始值确实容易踩坑,下面给你两种可行的解决思路:

方法一:直接用Script Mediator读取原始 payload

因为返回的是纯数字(属于JSON原始类型,非对象/数组),常规的json.get()方法没法直接获取,我们可以读取整个payload的原始字符串再转换为数字:

// 读取payload的原始字符串内容
var payloadStr = mc.getPayloadXML().toString();
// 转换为数字(整数用parseInt,浮点数用parseFloat)
var numValue = parseInt(payloadStr);
// 将值存入属性,供后续中介使用
mc.setProperty("responseNumber", numValue);

如果担心XML转换的问题,也可以直接读取输入流:

var inputStream = mc.getPayloadInputStream();
var reader = new java.io.BufferedReader(new java.io.InputStreamReader(inputStream));
var payloadStr = reader.readLine();
var numValue = Number(payloadStr);
mc.setProperty("responseNumber", numValue);
// 必须重置输入流,否则后续中介会找不到数据
inputStream.reset();
方法二:先包装为JSON对象再用JSON Path读取

如果更习惯用JSON Path语法处理,可以先用Payload Factory把纯数字包装成标准JSON对象,再通过路径取值:

  1. 先用Payload Factory Mediator包装响应:
<payloadFactory media-type="json">
    <format>{"result": $1}</format>
    <args>
        <arg evaluator="xml" expression="$body/text()"/>
    </args>
</payloadFactory>
  1. 之后就可以用常规方式取值了:
    • JSON Path表达式:json-eval($.result)
    • Script Mediator里可以用:var numValue = mc.getPayloadJSON().get("result");

为什么常规方法取不到值?

WSO2的JSON处理组件对JSON原始类型(数字、字符串、布尔值)的解析逻辑和对象/数组不同,默认不会为这类值生成根节点,所以直接用json-eval($.)或json.get()会返回空对象{},必须通过读取原始内容或包装为对象的方式处理。

内容的提问来源于stack exchange,提问作者ashok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:05:16