Свести массив JSON в преобразовании Джолта - PullRequest
0 голосов
/ 11 октября 2019

Ввод:

[
  {
    "name": "Foo",
    "ratings": [
      {
        "value": 2
      },
      {
        "value": 4
      }
    ]
  }
]

Спецификация:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "ratings": {
          "@": ""
        }
      }
    }
  }
]

Вывод:

[ {
  "value" : 2
}, {
  "value" : 4
} ]

Чего я хочу добиться:

[ {
  "name": "Foo",
  "value" : 2
}, {
  "name": "Foo",
  "value" : 4
} ]

Любые идеи, как изменить мою спецификацию удара, чтобы достигнуть того результата?

1 Ответ

0 голосов
/ 13 октября 2019
[
  {
    "operation": "shift",
    "spec": {
      "*": { // top level array
        "ratings": {
          "*": { // ratings array
            // push name down, but maintain the 
            //  same doubly nested array structure
            "@(2,name)": "[&3].[&1].name",
            // copy everything inside a ratings document 
            "*": "[&3].[&1].&"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": { // top level array
        // 2nd level array
        "*": "[]"
      }
    }
  }
]
...