【问题标题】:How can I fetch the value of a key-value pair in a JSON using shell script [duplicate]如何使用 shell 脚本在 JSON 中获取键值对的值 [重复]
【发布时间】:2022-01-19 16:54:25
【问题描述】:

如何使用 shell 脚本获取 JSON 中键值对的值 我不知道键值对在 JSON 中的位置,我将不得不搜索并获取键值对的值。

{
    "firstName": "Rajesh",
    "lastName": "Kumar",
    "gender": "man",
    "age": 24,
    "address": {
        "streetAddress": "126 Udhna",
        "city": "Surat",
        "state": "GJ",
        "postalCode": "394221",
        "state": "WB"
    },
    "phoneNumbers": [
        { "type": "home", "number": "7383627627" }
    ]
}

示例 JSON。我必须获取城市的值,但我不知道它的位置,因为我必须搜索并获取值。

【问题讨论】:

标签: arrays json bash shell jq


【解决方案1】:

JSON 对象没有位置(嗯,它们在写出的文件中,但另一个顺序将被视为相等)。数组确实有顺序。

city 字段位于最外层对象的 address 字段内。因此,使用 jq,您可以使用过滤器.address.city 访问它。 -r 选项将生成的 JSON 字符串解包为用于输出的原始字符串。

jq -r '.address.city' input.json
Surat

Demo

【讨论】:

    【解决方案2】:

    您可以通过以下方式获取与名为“city”的键对应的所有值的出现:

    jq '..|objects|.city  // empty'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      • 2018-02-05
      • 2017-12-26
      • 1970-01-01
      • 2018-01-27
      • 2011-09-13
      相关资源
      最近更新 更多