JQ добавляет свойства к вложенному объекту во вложенном массиве - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть следующий json:

{
  "first": {
    "second" : "A"
  },
  "array": [
    {
      "name" : "AAA",
      "something": {
        "hola": "hi"
      }
    },
    {
      "name" : "BBB",
      "something": {
        "hola": "hi"
      }
    }
  ]
}

Я бы хотел преобразовать его, добавив свойство к объекту something, используя значение из свойства name родительского объекта, например:

У меня есть следующий json:

{
  "first": {
    "second" : "A"
  },
  "array": [
    {
      "name" : "AAA",
      "something": {
        "hola": "hi",
        "NEW_PROPERTY": "AAA"
      }
    },
    {
      "name" : "BBB",
      "something": {
        "hola": "hi",
        "NEW_PROPERTY": "BBB"
      }
    }
  ]
}

Какое выражение jq может это сделать?

Ответы [ 2 ]

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

Вы можете просто использовать фильтр:

.array |= map(.something.NEW_PROPERTY = .name)

или, если map не ваша вещь (или если вы хотите сохранить набрав один символ):

.array[] |= (.something.NEW_PROPERTY = .name)
0 голосов
/ 21 сентября 2018

Попробуйте этот сценарий jq:

<file jq '.array = [ .array[] | .something.NEW_PROPERTY = .name ]'

Это заменяет array другим, который совпадает с исходным, с еще одним ключом NEW_PROPERTY.

...