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

Mirth v3.12.0获取Query String重复参数值的问题求助

解决Mirth v3.12.0中HTTP监听器重复参数的访问问题

我在Mirth v3.12.0中搭建了HTTP监听器通道,接收如下GET请求:
http://localhost:38081/Observation?identifier=2230106554&issued=ge[2023-07-08 10:00:02.345678]&issued=le[2023-07-08 12:00:02.345678]

尝试在转换器中获取两个issued参数值时,使用以下代码报错:

var issued0;
var issued1;
var issued = sourceMap.get('parameters').get('issued');
issued0 = issued[0];
issued1 = issued[1];

错误信息显示:

478:    issued0 = issued[0];
479:    issued1 = issued[1];
480:    var ge;
481:    var le;
482:    var headIssued0 = issued0.substring(0,2);
483:    var headIssued1 = issued1.substring(0,2);
LINE NUMBER:    479
DETAILS:    Java class "java.lang.String" has no public instance field or method named "0".

问题原因

Mirth的sourceMap.get('parameters')返回的是Java Map<String, Object>对象,当请求包含多个同名参数时,默认会将多个参数值拼接为逗号分隔的字符串,而非JavaScript数组。此时你尝试用issued[0]访问,本质是试图调用Java String对象的0属性,自然会报错。

解决方案

以下两种方法可以正确获取重复参数的数组值:

方法1:分割拼接字符串

如果参数值已被拼接为逗号分隔的字符串,直接分割成数组:

// 获取参数Map
var params = sourceMap.get('parameters');
// 获取拼接后的issued字符串
var issuedStr = params.get('issued');
// 分割为数组
var issuedArray = issuedStr.split(',');

// 提取两个参数值
var issued0 = issuedArray[0];
var issued1 = issuedArray[1];

// 后续处理逻辑
var headIssued0 = issued0.substring(0,2);
var headIssued1 = issued1.substring(0,2);

方法2:直接从请求对象获取参数数组(更可靠)

通过sourceMap中的request对象(原始HTTP请求对象),调用getParameterValues方法直接获取参数的数组形式,这是处理重复参数的标准方式:

// 获取原始HTTP请求对象
var request = sourceMap.get('request');
// 获取所有issued参数值的数组
var issuedArray = request.getParameterValues('issued');

// 先检查数组是否存在且长度足够
if (issuedArray && issuedArray.length >= 2) {
    var issued0 = issuedArray[0];
    var issued1 = issuedArray[1];
    
    var headIssued0 = issued0.substring(0,2);
    var headIssued1 = issued1.substring(0,2);
} else {
    // 处理参数缺失的异常情况
    logger.error("请求中缺少足够的issued参数");
}

注意事项

  • 务必添加空值和长度检查,避免出现数组越界或空指针错误;
  • Mirth使用Rhino JavaScript引擎,处理Java对象时要注意其与原生JS对象的差异,比如getParameterValues返回的是Java数组,可以直接按下标访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:58:15