gpt4 book ai didi

json - 如何使用 jq 获取根 key 和 key 类型

转载 作者:行者123 更新时间:2023-12-05 00:44:40 25 4
gpt4 key购买 nike

让我们以这个简单的数据文件为例:http://data.cdc.gov/data.json

我知道如何获取根键名称:

jq keys_unsorted[] -r data.json

它产生:
@context
@id
@type
conformsTo
describedBy
dataset

而且我知道如何获取 key 类型:
jq 'map(type)' data.json

其中产生:
[
"string",
"string",
"string",
"string",
"string",
"array"
]

没有某种方法可以将其组合成返回对吗? (我真正想做的是找到第一个根级数组的键名,如果有的话)。我可以写一个例程来弄清楚,但这似乎不雅。

附带问题:如何确定键的类型(例如,我会以某种形式将“数据集”发送到 jq 并得到“数组”作为返回)?

最佳答案

编写依赖于键名和值的查询的最简单方法是使用“*_entries”系列过滤器之一。在你的情况下:

$ jq -c 'to_entries[] | [.key, (.value|type)]' data.json

["@context","string"]
["@id","string"]
["@type","string"]
["conformsTo","string"]
["describedBy","string"]
["dataset","array"]

如果您希望以更易于阅读的方式呈现,请考虑使用 @csv 或 @tsv,例如
$ jq -r 'to_entries[] | [.key, (.value|type)] | @csv' data.json
"@context","string"
"@id","string"
"@type","string"
"conformsTo","string"
"describedBy","string"
"dataset","array"

或者噪音更小:
$ jq -r 'to_entries[] | "\(.key) \(.value|type)"' data.json
@context string
@id string
@type string
conformsTo string
describedBy string
dataset array

奖金问题

这是第二个问题的参数化方法。让文件 query.jq 包含:
.[$key]|type

然后:
$ jq -r --arg key dataset -f query.jq data.json
array

关于json - 如何使用 jq 获取根 key 和 key 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com