【问题标题】:How to parse and loads JSON in bash shell script?如何在 bash shell 脚本中解析和加载 JSON?
【发布时间】:2016-09-29 02:54:23
【问题描述】:

我正在尝试在 shell 脚本中加载和打印 JSON 响应。我不知道如何实现这一点。请帮助我。

代码:

#!/bin/sh

malop_q=$(curl -X GET -k -H "SEC: xxxxxxxxxxxxxxxxxxxxxx" 'https://127.0.0.1/api/reference_data/sets/malopid?fields=data(value)')

echo $malop_q

JSON 响应:

{"data":[{"value":"11.945403842773683082"},{"value":"11.945403842773683082"},{"value":"11.945403842773683082"}]}

预期的 OP 是

我需要从上面的 JSON 响应中打印值是:

11.945403842773683082
11.945403842773683082
11.945403842773683082

提前致谢。

'

【问题讨论】:

  • 您在寻找“仅限 bash”的答案吗?或回答哪个使用python?
  • 看看jq。使用文本处理工具(如 awk)解析 json 绝不是最好的主意。使用具有json 解析库的工具。
  • 是的,我只需要 bash

标签: python json bash shell api


【解决方案1】:

下面的python代码进行解析,假设你保存为:my_json.py

import json,sys

obj=json.load(sys.stdin)
for i in range(len(obj['data'])):
    print obj['data'][i]['value']

您可以使用以下方式获得响应:

malop_q=$(curl -X GET -k -H "SEC: xxxxxxxxxxxxxxxxxxxxxx" 'https://127.0.0.1/api/reference_data/sets/malopid?fields=data(value)')   
echo $malop_q | python my_json.py

或一行:

curl -X GET -k -H "SEC: xxxxxxxxxxxxxxxxxxxxxx" 'https://127.0.0.1/api/reference_data/sets/malopid?fields=data(value)' | python my_json.py

【讨论】:

    【解决方案2】:

    使用 Python:

    import json
    
    with open('file.json') as json_file:    
        datas = json.load(json_file)
    
    for d in datas["data"]:
      print(d["value"])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      • 2010-12-06
      • 2017-01-06
      相关资源
      最近更新 更多