Результаты группы в Толчке - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь сгруппировать некоторые данные в массивы на основе поля json.

[
  {
    "Type": "Cash",
    "Value1": "668131AA3",
    "ParentId": "87984E01",
    "CashId": "6688E582",
    "StockId": null
  },
  {
    "Type": "Stock",
    "Value1": "668131AA3",
    "ParentId": "87984E01",
    "CashId": "1FD714A9",
    "StockId": "1FD714A9"
  },
  {
    "Type": "Stock",
    "Value1": "668131AA3",
    "ParentId": "87984E01",
    "CashId": "0635B045",
    "StockId": "0635B045"
  },
  {
    "Type": "Cash",
    "Value1": "668131AA3",
    "ParentId": "87984E01",
    "CashId": "47E65472",
    "StockId": null
  }
]

И желаемый вывод:

    "Value1": "668131AA3",
    "ParentId": "87984E01",
    "CashPayouts" : [ 
        {"CashId": "6688E582"},
        {"CashId": "87984E01"}
    ],
    "StockPayouts" : [ 
       {"StockId": "1FD714A9","CashId": "1FD714A9"},
       {"StockId": "0635B045","CashId": "0635B045"}
     ]
}

В основном, если поле Type=Cash, CashId должно быть сгруппировано в массив CashPayouts. Для Type=Stock сгруппируйте два поля в массиве StockPayouts.

Возможно ли сделать это преобразование в Джолте? Если это правда, то как?

Спасибо, Хуан

1 Ответ

1 голос
/ 28 октября 2019

Пример должен быть завершен:

 [
  {
    "operation": "shift",
    "spec": {
      "*": {
        "Value1": "Value1",
        "ParentId": "ParentId",
        "Type": {
          "Stock": {
            "@(2)": {
              "CashId": "t.StockPayouts[&4].CashId",
              "StockId": "t.StockPayouts[&4].StockId"
            }
          },
          "Cash": {
            "@(2)": {
              "CashId": "t.CashPayouts[&4].CashId"
            }
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=recursivelySquashNulls",
      "Value1": "=firstElement(@(1,Value1))",
      "ParentId": "=firstElement(@(1,ParentId))"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "Value1": "Value1",
      "ParentId": "ParentId",
      "t": ""
    }
  }
]
...