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

如何在Mirth中筛选客户端API响应数据并发送至指定数据库?

解决Mirth中处理API响应并过滤字段后发送到数据库的问题

核心逻辑

先把HTTP Sender返回的响应解析成可操作的JSON/XML对象,过滤掉不需要的字段,再把处理后的数据映射到数据库或者传递给其他目标。

1. 解析API响应

在目标连接器的Response标签页里,先把响应字符串转成Mirth能操作的对象:

  • 如果是JSON响应:
    var responseObj = JSON.parse(response);
    // 存到通道映射,后续步骤直接用
    channelMap.put("parsedResponse", responseObj);
    
  • 如果是XML响应:
    var responseXml = XMLUtil.toXml(response);
    channelMap.put("parsedResponse", responseXml);
    

2. 过滤不需要的字段

根据响应格式处理:

  • JSON场景:直接删除不需要的属性,比如要去掉password和internalId:
    var filteredObj = channelMap.get("parsedResponse");
    delete filteredObj.password;
    delete filteredObj.internalId;
    // 嵌套字段也一样,比如filteredObj.user.extraInfo
    delete filteredObj.user.extraInfo;
    channelMap.put("filteredData", filteredObj);
    
    要是需要保留的字段少,用白名单更高效:
    var allowedFields = ["name", "email", "phone"];
    var filteredObj = {};
    var originalObj = channelMap.get("parsedResponse");
    allowedFields.forEach(function(field) {
      if (originalObj.hasOwnProperty(field)) {
        filteredObj[field] = originalObj[field];
      }
    });
    channelMap.put("filteredData", filteredObj);
    
  • XML场景:用XMLUtil.removeNode删除指定节点:
    var filteredXml = channelMap.get("parsedResponse");
    XMLUtil.removeNode(filteredXml, "password");
    XMLUtil.removeNode(filteredXml, "internalId");
    // 嵌套节点比如/user/extraInfo
    XMLUtil.removeNode(filteredXml, "user/extraInfo");
    channelMap.put("filteredData", filteredXml);
    

3. 发送到数据库或其他目标

数据库目标(Database Writer)

  • 在数据库连接器的Destination标签页,写好插入/更新的SQL语句,比如:
    INSERT INTO user_table (name, email, phone) VALUES (?, ?, ?)
    
  • 然后在Mapping里绑定过滤后的数据:
    • 第一个参数填${filteredData.name}(JSON)或${filteredXml.name}(XML)
    • 后面的参数依次对应需要的字段即可,只映射你要保留的内容。

发送到其他通道/目标

  • 把过滤后的数据转成字符串:JSON用JSON.stringify(filteredData),XML用XMLUtil.toString(filteredXml)
  • 把字符串放到messageObject.getEncodedData()或者通道映射里,再通过通道间连接器(Channel Reader/Writer)发送给其他通道。

小提示

  • 直接在Response的Transformer里完成过滤,后续目标可以直接用处理好的数据,不用重复解析。
  • 不确定字段结构的话,用logger.info(JSON.stringify(responseObj))打印响应结构,方便调试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:12:38