如何读取JSON文件中Role字段的值并存储到变量?求基础工具方案
从JSON文件提取指定字段内容的解决方案
问题背景
现有demo.json文件内容如下(注意:原文件末尾"Id": "1",的逗号需删除,否则JSON格式不合法):
"A": { "User": "xyz", "Role": { "Role1": [ "piolet" ], "Role2": [ "driver" ], "Role3": [ "technician" ] }, "Id": "1" }
需要提取Role字段对应的内容(如下所示)并存储到变量中,使用grep仅能获取到{,无法得到完整内容:
"Role1": [ "piolet" ], "Role2": [ "driver" ], "Role3": [ "technician" ]
解决方案
方法1:使用jq(推荐,结构化JSON处理工具)
jq是专门用于JSON数据处理的工具,能精准定位层级字段:
# 提取Role字段内容并存储到变量 role_content=$(jq '.A.Role' demo.json) # 验证变量内容 echo "$role_content"
执行后变量role_content会存储预期的完整Role字段内容。
方法2:使用awk+sed(基础系统工具,无jq时可用)
利用文本匹配提取目标内容:
# 提取内容并存储到变量 role_content=$(awk '/"Role": {/{flag=1;next}/},/{if(flag){print;flag=0}}flag' demo.json | sed 's/^ //') # 验证变量内容 echo "$role_content"
awk部分:匹配到"Role": {时开启打印标记,匹配到},(Role字段的闭合符)时关闭标记,期间打印所有行sed部分:去除每行开头的两个缩进空格,匹配预期格式
内容的提问来源于stack exchange,提问作者Anuj Saxena
相关产品推荐
相关产品推荐

