Mirth Connect Канал назначения сортировка JSON массив объектов - PullRequest
1 голос
/ 25 марта 2020

Мне нужно отсортировать массив объектов, отправляемых в 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}}
      }
   ]}
}

Мне нужен ArrayToSort, упорядоченный по возрастанию свойства Num.

Мои вопросы:

  1. Наилучшее место для сортировки в преобразователе канала назначения?
  2. Я предполагаю, что путь к go через JavaScript, но я не уверен, как поступить - предложения?

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

Оказывается, решение довольно простое.

В JavaScript вам просто нужно сделать следующее:

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

logger.info(JSON.stringify(msg));
0 голосов
/ 25 марта 2020

Сортировку можно выполнить, используя 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));
...