Nifi Jolt Spec, чтобы сгладить массив - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть вход JSON с массивом:

{
    "id": 3,
    "name": "ROOT",
    "mylist": [{
        "id": 10,
        "info": "hello"
        },
        {
        "id": 11,
        "info": "world"
        }
    ]
}

То, что я хотел бы преобразовать в «плоский» JSON, как показано ниже:

{
    "id": 3,
    "name": "Root",
    "mylist[0].id": 10,
    "mylist[0].info": "hello",
    "mylist[1].id": 11,
    "mylist[1].info": "world"    
}

Как мне добиться этого с помощью спецификации JoltTransformJSON?

1 Ответ

0 голосов
/ 05 сентября 2018

Нужно избегать всех вещей, которые обычно вызывают сдвиг, чтобы добавить подобъект.

[
  {
    "operation": "shift",
    "spec": {
      "id": "id",
      "name": "name",
      "mylist": {
        "*": {
          "id": "myList\\[&1\\]\\.id",
          "info": "myList\\[&1\\]\\.info"
        }
      }
    }
  }
]

Это то же самое, но "более общее".

[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "mylist": {
        "*": {
          "*": "&2\\[&1\\]\\.&"
        }
      }
    }
  }
]

Обратите внимание, вы все равно должны сказать ему, что "mylist" - это вещь, в которую нужно вмешаться, то есть не существует спецификации Shift, которая сгладит все Json.

...