2016-11-01 88 views
-1

我有一些JSON的輸入數據,我想的變量值到的東西我可以粘貼提取到我的劇本使用JQ遍歷JSON數據

輸入樣本:

{ 
    "menu": { 
    "props": [{ 
     "name": "foo1", 
     "model": "bar1" 
    }, { 
     "name": "foo2", 
     "model": "bar2" 
    }, { 
     "name": "foo3", 
     "model": "bar3" 
    }, { 
     "name": "foo4", 
     "model": "bar4" 
    }, { 
     "name": "foo5", 
     "model": "bar5" 
    }] 
    } 
} 

所需的輸出:

AddMenuItem(menu, "bar1", "foo1"); 
AddMenuItem(menu, "bar2", "foo2"); 
AddMenuItem(menu, "bar3", "foo3"); 
...etc 

回答

1

像這樣的工作:

$ jq -r '.menu.props[] | "AddMenuItem(menu, \"\(.model)\", \"\(.name)\")"' file.txt 
AddMenuItem(menu, "bar1", "foo1") 
AddMenuItem(menu, "bar2", "foo2") 
AddMenuItem(menu, "bar3", "foo3") 
AddMenuItem(menu, "bar4", "foo4") 
AddMenuItem(menu, "bar5", "foo5") 

-r打印原始輸出(不是JSON編碼)。

[]展開props陣列併爲所述陣列中的每個元素打印字符串"AddMenu..."

也可以使用...props | map("AddMenu...")[]這可能更直觀。

\(...)啓用()之間的字符串插值。