【问题标题】:Mirth Connect Channel destination sort JSON array of objectsMirth Connect Channel 目标排序 JSON 对象数组
【发布时间】:2020-03-25 13:33:44
【问题描述】:

我需要对发送到 Mirth 的对象数组进行排序。最初排序是通过 XSLT 完成的(因为入站数据是 XML),但是随着更改(在我的控制之外)入站数据更改为 JSON。原始排序是在我保留的目标转换中完成的。

入站 JSON 示例:

{
  "Id":"100001",
  "Set":
  {
    "unimportantdata1":null,
    "unimportantdata2":null,
    "unimportantdata3":"0001-01-01T00:00:00",
    "unimportantdata4":"0001-01-01T00:00:00",
    "ArrayToSort":[
      {
        "vt":"blah",
        "Num":"2",
        "desc":"dp",
        "Value":["1.1","1.2"],
        "Time":"2020-03-23T02:23:41",
        "blah": { "Name": { "LastName":"ob-ln","Firstname":"ob-fn","MiddleName":"ob-mi","Title":null}}
      },
      {
        "vt":"yadda",
        "Num":"1",
        "desc":"dp",
        "Value":["1.1","1.2"],
        "Time":"2020-03-23T02:23:41",
        "blah": { "Name":{"LastName":"ob-ln","Firstname":"ob-fn","MiddleName":"ob-mi","Title":null}}
      }
   ]}
}

我需要按“Num”属性升序排序的 ArrayToSort。

我的问题是:

  1. 这是在目标通道转换器中排序的最佳位置吗?
  2. 我猜要走的路是通过 JavaScript,但我不确定如何继续 - 建议?

提前谢谢你

【问题讨论】:

标签: javascript json mirth


【解决方案1】:

原来解决方案很简单。

在 JavaScript 中,您只需要执行以下操作:

msg['Set']['ArrayToSort'].sort(function(a,b){
    return a["Num"] - b["Num"];
});

logger.info(JSON.stringify(msg));

【讨论】:

    【解决方案2】:

    可以使用Array.sort 进行排序。并且可以更新数据

    let data = {
      Id: "100001",
      Set: {
        unimportantdata1: null,
        unimportantdata2: null,
        unimportantdata3: "0001-01-01T00:00:00",
        unimportantdata4: "0001-01-01T00:00:00",
        ArrayToSort: [
          {
            vt: "blah",
            Num: "2",
            desc: "dp",
            Value: ["1.1", "1.2"],
            Time: "2020-03-23T02:23:41",
            blah: {
              Name: {
                LastName: "ob-ln",
                Firstname: "ob-fn",
                MiddleName: "ob-mi",
                Title: null
              }
            }
          },
          {
            vt: "yadda",
            Num: "1",
            desc: "dp",
            Value: ["1.1", "1.2"],
            Time: "2020-03-23T02:23:41",
            blah: {
              Name: {
                LastName: "ob-ln",
                Firstname: "ob-fn",
                MiddleName: "ob-mi",
                Title: null
              }
            }
          }
        ]
      }
    };
    data.Set.ArrayToSort = data.Set.ArrayToSort.sort((x, y) => x.Num - y.Num);
    console.log(JSON.stringify(data, null, 2));

    【讨论】:

    • 这与早些时候提出的其他答案基本相同。如果有人尝试使用此解决方案,您必须在 ES6 模式下运行 Mirth 3.7 或更高版本才能获得箭头功能支持。 Mirth 也不支持console.log
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    相关资源
    最近更新 更多