jq - добавить родительский ключ и переместить значения в субключ - PullRequest
0 голосов
/ 13 марта 2019

Я хотел бы добавить родительский ключ и переместить каждое значение во вложенный ключ.Например, я хочу преобразовать следующий json:

{                                                    
  "hello": "world",                                
  "foo": "bar"        
}

в

{
    "parent_key": {
        "hello": {
            "value": "world"
        },
        "foo": {
            "value": "bar"
        }
    }
}

Ответы [ 2 ]

1 голос
/ 18 марта 2019

если вы хотите попробовать альтернативное решение здесь, используя jtc утилита unix:

это происходит всего за 2 заранее прописанных шага: 1. переместить значения в подраздел 2. добавить родительский ключ

bash $ <file.json jtc -w[:] -u'[:]<val>v' -T'{ "value": {{val}} }' | jtc -u'<root>v' -T'{ "parent_key": {root} }'
{
   "parent_key": {
      "foo": {
         "value": "bar"
      },
      "hello": {
         "value": "world"
      }
   }
}
bash $ 

ОБНОВЛЕНИЕ: с последней версией jtc функциональность шаблона была расширена, поэтому для работы того же примера требуется небольшое изменение шаблона ({root} необходимо записать как {{root}}):

bash $ <file.json jtc -w[:] -u'[:]<val>v' -T'{ "value": {{val}} }' | jtc -u'<root>v' -T'{ "parent_key": {{root}} }'
{
   "parent_key": {
      "foo": {
         "value": "bar"
      },
      "hello": {
         "value": "world"
      }
   }
}
bash $ 
0 голосов
/ 13 марта 2019
{ parent_key: map_values( {value: .}) }
...