如何使用jq检查json中是否存在属性?

问题描述 投票:0回答:1

嗨,我有一个 shell 脚本, shell 脚本有一个名为 RESPONSE 的变量

我想要检查 json 对象是否存在名为“address”的属性。还有如何获取属性地址的值。我想使用jq库

#!/bin/bash

RESPONSE={"content-length":"2","address":"192.168.123.1","path":"/hello-world"}

感谢任何帮助

jq
1个回答
2
投票
  1. jq '.address'
    将输出属性
    value
    的值,例如
    "192.168.123.1"
    。 (
    jq -r
    去掉引号)
  2. jq 'has("address")'
    将输出
    true
    /
    false
  3. jq -e 'has("address")' > /dev/null
    将根据具有键“address”的对象(无论值如何)将进程的退出状态设置为
    0
    /
    1
  4. 如果“address”属性具有
  5. truthy
     值(除了 
    jq -e '.address' > /dev/null
    0 之外的任何值),
    null
    会将进程的退出状态设置为
    false
    null
    false
    值属性会将退出代码设置为
    1

拥有适当的退出状态可以让您执行以下操作:

if jq -e '.address' > /dev/null; then
  echo 'object has address field'
fi
# or:
jq -e 'has("address")' > /dev/null || echo 'object does not have an address'
© www.soinside.com 2019 - 2024. All rights reserved.