Нужен JOLT spec файл для переноса сложного JSON - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть сложный объект JSON (я упростил его для этого примера), для которого я не могу понять JSON-преобразование JSON. У кого-нибудь есть идеи о том, каким должен быть файл спецификации JOLT?

Оригинал JSON

[
  {
    "date": {
      "isoDate": "2019-03-22"
    },
    "application": {
      "name": "SiebelProject"
    },
    "applicationResults": [
      {
        "reference": {
          "name": "Number of Code Lines"
        },
        "result": {
          "value": 44501
        }
      },
      {
        "reference": {
          "name": "Transferability"
        },
        "result": {
          "grade": 3.1889542208002064
        }
      }
    ]
  },
  {
    "date": {
      "isoDate": "2019-03-21"
    },
    "application": {
      "name": "SiebelProject"
    },
    "applicationResults": [
      {
        "reference": {
          "name": "Number of Code Lines"
        },
        "result": {
          "value": 45000
        }
      },
      {
        "reference": {
          "name": "Transferability"
        },
        "result": {
          "grade": 3.8
        }
      }
    ]
  }
]

Желаемый JSON после преобразования и сортировки по «Имя» ASC, «Дата» DESC

[
  {
    "Name": "SiebelProject",
    "Date": "2019-03-22",
    "Number of Code Lines": 44501,
    "Transferability" : 3.1889542208002064
  },
  {
    "Name": "SiebelProject",
    "Date": "2019-03-21",
    "Number of Code Lines": 45000,
    "Transferability" : 3.8
  }
]

1 Ответ

0 голосов
/ 26 апреля 2019

Я не смог найти способ сделать сортировку (я даже не уверен, что вы можете сортировать по убыванию в JOLT), но вот спецификация для преобразования:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "date": {
          "isoDate": "[#3].Date"
        },
        "application": {
          "name": "[#3].Name"
        },
        "applicationResults": {
          "*": {
            "reference": {
              "name": {
                "Number of Code Lines": {
                  "@(3,result.value)": "[#7].Number of Code Lines"
                },
                "Transferability": {
                  "@(3,result.grade)": "[#7].Transferability"
                }
              }
            }
          }
        }
      }
    }
  }
]

После этого есть некоторые инструменты (вроде jq, я думаю), которые могли бы выполнить сортировку.

...