2015-09-22 8 views
-2

У меня есть JSON объект какShell скрипт, чтобы получить значение ключа пару из объекта JSON

{ 
    "Men": [ 
    "All Clothing", 
    "All Clothing", 
    "All footwear", 
    "All footwear", 
    "All Watches", 
    "All Watches", 
    "All Sunglasses", 
    "All Sunglasses" 
    ], 
    "Electronics": [ 
    "Mobiles", 
    "Tablets", 
    "Wearable Smart Devices", 
    "Mobile Accessories", 
    "Headphones and headsets", 
    "Tablet Accessories", 
    "Computer Accessories", 
    "Televisions", 
    "Large Appliances", 
    "Small Appliances", 
    "Kitchen Appliances", 
    "Personal Care", 
    "Audio and video", 
    "Laptop" 
    ], 
    "Women": [ 
    "Ethnic wear", 
    "Western wear", 
    "Lingerie & Sleep Wear", 
    "All Bags, Belts & Wallets", 
    "All jewellery", 
    "All Perfumes", 
    "Spectacle Frames", 
    "Beauty & Personal Care", 
    "The International Beauty Shop" 
    ] 
} 

Я хочу, чтобы получить значение ключа пары из этого object.m используя JQ фильтр, но он оленья кожа работа.

keys=`jq 'keys' $categories` 

$ categories - это имя переменной объекта json. предложения приветствуются.

ответ

2

Это не совсем понятно, о чем вы просите. Если $categories содержит ваши данные JSON, вам нужно как-то его обмануть до jq. С Bash, вы могли бы использовать здесь строку:

jq keys <<<"$categories" 

или более традиционно (и переносим), трубу:

printf '%s\n' "$categories" | jq keys 

Чтобы захватить значение ключей в переменный, используйте подстановки команд :

keys=$(jq 'keys' <<<"$categories") 

(или `backticks` как в вашей попытки, но современные обозначения гораздо предпочтительнее);

или еще лучше, получите это значение так же, как вы назначили categories.