curl调用JSON接口后,如何规范提取内层对象的键值对?
规范提取JSON返回中
result字段的方法 我通过curl发起JSON接口调用,得到如下返回数据:
{ "result": { "today_runtime": 830, "month_runtime": 39991, "today_energy": 1293, "month_energy": 55326, "local_time": "2022-11-27 13:50:54", "electricity_charge": [0, 0, 0], "current_power": 93860 }, "error_code": 0 }目前手动移除
{'result':和, 'error_code': 0}后可成功提取内层键值对,但希望了解更规范的自动化提取方法。
推荐方法:使用jq命令行工具
jq是专门为JSON数据设计的处理工具,是处理这类场景的标准方案,兼容性强且容错性高。
提取完整的result内容
直接通过字段路径定位提取,保留JSON格式:
curl "你的接口地址" | jq '.result'
压缩输出为单行
如果需要紧凑的单行格式,添加-c参数:
curl "你的接口地址" | jq -c '.result'
提取单个字段
如果只需要某个具体字段的值,比如today_energy:
curl "你的接口地址" | jq '.result.today_energy'
备选方法:Python脚本处理
如果环境中有Python,可通过脚本实现灵活的JSON解析:
import json import sys # 读取标准输入的JSON数据 raw_data = sys.stdin.read() parsed_data = json.loads(raw_data) # 格式化输出result字段内容 print(json.dumps(parsed_data['result'], indent=4))
将上述代码保存为extract_result.py,执行命令:
curl "你的接口地址" | python extract_result.py
临时方案:文本处理工具(不推荐)
如果无法使用专业JSON工具,且返回格式完全固定,可通过grep+sed临时处理,但该方法对JSON格式变化容错性极低:
curl "你的接口地址" | grep -A7 "'result': {" | tail -n +2 | head -n -1 | sed 's/^ //'
内容的提问来源于stack exchange,提问作者Adrian M
相关产品推荐
相关产品推荐

