私は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
また、一部の値名が空であるため、文字列も空であることは望ましくありません。
ベストアンサー1
to_entries
その後、空でないキーを選択し、次を使用して値を抽出できます。
jq 'to_entries | map(select(.key != "null"))[] | (.key, .value.type)' < file2.json