shell 使用jq解析json字符串数组

echo json.txt | jq '.' 输出整个json字符串

echo json.txt | jq '.[0]' 取出数组中第一个object

echo json.txt | jq '.[0].name' 取出数组第一个object中键为name的值

root@JDBox_LuBan:~# cat json.txt | jq '.[0].name' 
"Google"

json.txt:

复制代码
[
  {
    "name": "Google",
    "location": {
      "street": "1600 Amphitheatre Parkway",
      "city": "Mountain View",
      "state": "California",
      "country": "US"
    },
    "employees": [
      {
        "name": "Michael",
        "division": "Engineering"
      },
      {
        "name": "Laura",
        "division": "HR"
      },
      {
        "name": "Elise",
        "division": "Marketing"
      }
    ]
  }
]
复制代码

1.嵌套解析:

# cat json.txt | jq '.[0].location.city'
"Mountain View"

2.获取JSON中的所有键:

# cat json.txt | jq '.[0]|keys'
[
  "employees",
  "location",
  "name"
]

 3.获取键值对的个数,或者数组长度:

cat json.txt | jq '.[0].employees|length'
3
复制代码
# 取键foo的值:
echo '{"foo": 42, "bar": "less interesting data"}' | jq '.foo'
42
# 获取json所有键:
echo '{"foo": 42, "bar": "less interesting data"}' | jq 'keys'
[
"bar",
"foo"
]
# has判断是否存在某个key
echo '{"foo": 42, "bar": "less interesting data"}' | jq 'has("foo")' 
true
# 获取键值对的个数,或者数组长度
echo '{"foo": 42, "bar": "less interesting data"}' | jq 'length' 
2
复制代码

参考:https://blog.csdn.net/yanbingquan/article/details/50770911

posted @   船长博客  阅读(4402)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
历史上的今天:
2020-11-28 curl wget 不验证证书进行https请求
2020-11-28 scp 拷贝文件夹到本地
每个人都有一个觉醒期,但觉醒的早晚决定个人的命运
点击右上角即可分享
微信分享提示