让我们来看看这个简单的数据文件:http : //data.cdc.gov/data.json
我知道如何获取根密钥名称:
jq keys_unsorted[] -r data.json
产生:
@context
@id
@type
conformsTo
describedBy
dataset
而且我知道如何获取关键类型:
jq 'map(type)' data.json
产生:
[
"string",
"string",
"string",
"string",
"string",
"array"
]
是否没有某种方法可以在返回的对中将其组合?(我真正想做的是找到第一个根级别数组的键名)。我可以编写一个例程来解决这个问题,但这看起来并不优雅。
额外的问题:如何确定键的类型(例如,我将以某种形式将“数据集”发送给jq并获得“数组”作为回报)?
jq 'first(path(.[] | select(type == "array"))[0])' < data.json
顶层项目.[]
被过滤掉,select(type == "array")
仅选择数组类型的项目。path()
返回中的路径的数组表示形式.
,即数组项的键名;first()
提取第一条路径。
因此,命令的结果是第一个顶级数组项的键名。
样本输出
"dataset"
如何确定键的类型(例如,我将以某种形式将“数据集”发送给jq并返回“数组”)。
您可能的意思是“值的类型”,因为键必须是JSON中的字符串。如果路径是已知的(例如.dataset
),则可以使用以下type
函数来获取对象的类型:
jq '.dataset | type' < data.json
样本输出
"array"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句