我有一个 json
[
{
"name": "type1",
"type": "string",
"values": {
"set1": "dataA1",
"set1": "dataA2"
}
},
{
"name": "type2",
"type": "string",
"values": {
"set1": "dataB1",
"set2": "dataB2"
}
},
{
"name": "null",
"type": "string",
"values": {
"set1": "dataC1",
"set2": "dataC2"
}
},
{
"name": "type4",
"type": "string",
"values": {
"set1": "dataD1",
"set2": "dataD2"
}
}
]
这是一个很长的 json,所以我想这样做。
{
"type1": {
"type": "string",
"values": {
"set1": "dataA1",
"set2": "dataA2"
}
},
null: {
"type": "string",
"values": {
"set1": "dataB1",
"set2": "dataB2"
}
},
"type3": {
"type": "string",
"values": {
"set1": "dataC1",
"set2": "dataC2"
}
},
"type4": {
"type": "string",
"values": {
"set1": "dataD1",
"set2": "dataD2"
}
}
}
所以,我想问一下这是否真的好,或者我应该使用旧的。如果这个更好,我以前用过jq '.[] | .name, .type' file.json
那么如何使用新的 json 获得这样的输出
"key"
"type"
"key"
"type"
"key"
"type"
所以输出变成
type1
string
type2
string
# the type3 and its type is not needed cause its null
type4
string
另外,一些值名称为空,所以我不希望字符串也为空。
您可以使用
to_entries
,然后选择非空键并提取值:与另一个答案中的想法类似,但在不将
name
键值转换为键的情况下作用于原始 JSON 文档:这将提取顶级数组中其
name
值不是 string 的所有条目null
。然后它从剩余条目中提取name
和值。type
通常,在 JSON 中使用数据作为键的值意义不大,这就是我选择使用原始文件的原因。