2015-04-23 4 views
1

Учитывая массив JSON объектов таким образом:Распаковка согласованного ребенка JSON из вложенного объекта JSON с JQ

{ 
    "header" : { 
    "user" : "baskar" 
    }, 
    "requests" : [ { 
    "first_name" : "mike", 
    "last_name" : "mat" 
    }, { 
    "first_name" : "mike1", 
    "last_name" : "mat" 
    } ], 
    "check" : [ "Y" ] 
} 

Я хотел бы извлечь подмножество ключевых/значений из вложенных запросов на основе состояния , в то время сохраняя другие свойства от внешнего объекта неповрежденного, создавая что-то вроде: Когда я искать first_name =

{ 
    "header" : { 
    "user" : "baskar" 
    }, 
    "requests" : [ { 
    "first_name" : "mike", 
    "last_name" : "mat" 
    } ], 
    "check" : [ "Y" ] 
} 

Я попытался ниже вещи «Майк»,

[.requests[] | select(.first_name == "mike")] 

Но он дает подмножество согласованных запросов, но не возвращает элемент заголовка и элемента проверки.

Я уверен, что с jq должен быть достаточно простой способ достижения этого. Помогите оценить.

ответ

3

Вам нужно подумать об этом с точки зрения обновления массива запросов, фильтруя его.

Это должно работать:

.requests |= map(select(.first_name == "mike")) 
+0

Удивительным это работает, если он обернут внутри кронштейна. Но у моего фактического запроса нет скобки. Я отредактировал свои запросы. Вышеуказанная команда не работает с указанным выше запросом. – user1578872

+0

Получил это. Большое спасибо. .requests | = map (выберите (.first_name == "mike")). это работает в этом случае. – user1578872

Смежные вопросы