【发布时间】:2021-07-24 01:24:10
【问题描述】:
我有一个 json 文档,当 035.subfields[].ind1 和 035.subfields[].ind2 均为“0”时,我需要提取标签 035 和 999 的子字段 a 的值。这是我的文件:
{
"leader": "01815cam a22004934a 4500",
"fields": [
{
"001": "mig00005597434"
},
{
"035": {
"subfields": [
{
"a": "(OCoLC)67764532"
}
],
"ind1": " ",
"ind2": " "
}
},
{
"035": {
"subfields": [
{
"a": "ocm00000001projmusemuse13792"
}
],
"ind1": "0",
"ind2": "0"
}
},
{
"245": {
"subfields": [
{
"a": "The Sins of the Father"
},
{
"b": "A Romance of the South /"
},
{
"c": "by Thomas Dixon ; with an introduction by Steven Weisenburger."
}
],
"ind1": "1",
"ind2": "4"
}
},
{
"999": {
"subfields": [
{
"i": "a1b7fa7e-9e2e-4973-96d0-3939235c8b80"
},
{
"s": "020d182f-ba5d-4bbe-a2eb-e4390aa0736c"
}
],
"ind1": "f",
"ind2": "f"
}
}
]
}
我想要的输出是
ocm00000001projmusemuse13792 020d182f-ba5d-4bbe-a2eb-e4390aa0736c
当我尝试获取这两个值时,
jq -r '.fields[] | [(select(."035".ind1 == "0" and ."035".ind2 == "0") | ."035".subfields[].a), (select(."999") |."999".subfields[].s)] '
我明白了
[]
[]
[
"ocm00000001projmusemuse13792"
]
[]
[
null,
"020d182f-ba5d-4bbe-a2eb-e4390aa0736c"
]
但是我尝试移动 999 选择的其他变体(例如
jq '.fields[] | [(select(."035".ind1 == "0" and ."035".ind2 == "0") | ."035".subfields[].a), (select(."999".subfields[].s) | ."999".subfields[].s)] '
我知道我不能迭代 null。我错过了什么?
【问题讨论】:
标签: json select conditional-statements jq