使用Bash提取JSON变量

4
我需要从一个JSON编码的文件中提取变量,并将其分配给Bash中的一个变量。
摘录...来自file.json
  "VariableA": "VariableA data", 
    "VariableB": [
        "VariableB1", 
        "VariableB2", 
        "VariableB3", 
        "VariableB3"
    ], 

我在这方面有所进展

variableA=$(fgrep -m 1 "VariableA" file.json )

但它返回整行,我只想要数据。

对于VariableB,我需要用逗号分隔的值替换列表。

我已经看过awk、sed、grep、正则表达式等,但是由于学习曲线太陡峭,需要知道哪一个才能使用,或者有更好的解决方案。

感谢您的建议……但这很完美 git://github.com/kristopolous/TickTick.git

3个回答

7

jsawk 对我来说很管用。在 OS X 上安装也相当容易。 - Clayton Stanley

4

有一个强大的命令行JSON工具jq

提取单个值很容易:

variableA=$(jq .VariableA file.json)

尝试使用逗号分隔的数组内容,请尝试以下方法:
variableB=$(jq '.VariableB | @csv' file.json)

或者

variableB=$(jq '.VariableB | .[]' file.json | tr '\n' ',' | head -c-1)

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接