【发布时间】:2021-12-01 11:14:06
【问题描述】:
我遇到了这两个 json 对象的问题:
{
"generalPractitioner":[
{
"extension":[
{
"url":"http://catsalut.gencat.cat/fhir/StructureDefinition/patient-tipus-relacio",
"valueCodeableConcept":{
"coding":[
{
"system":"http://catsalut.gencat.cat/fhir/StructureDefinition/tipus-rel-organitzacio",
"code":"UPAPASSIG"
}
]
}
}
],
"reference":"Organization/132336"
},
{
"extension":[
{
"url":"http://catsalut.gencat.cat/fhir/StructureDefinition/patient-tipus-relacio",
"valueCodeableConcept":{
"coding":[
{
"system":"http://catsalut.gencat.cat/fhir/StructureDefinition/tipus-rel-organitzacio",
"code":"UPAPTERRI"
}
]
}
}
],
"reference":"Organization/132346"
}
]
}
{
"generalPractitioner":[
{
"extension":[
{
"url":"http://catsalut.gencat.cat/fhir/StructureDefinition/patient-tipus-relacio",
"valueCodeableConcept":{
"coding":[
{
"system":"http://catsalut.gencat.cat/fhir/StructureDefinition/tipus-rel-organitzacio",
"code":"UPAPASSIG"
}
]
}
}
],
"reference":"Organization/132336"
}
]
}
我正在尝试:
jq --raw-output '[ ( .generalPractitioner[0] | ( .extension[] | .url, ( .valueCodeableConcept | .coding[] | .system, .code ) ), .reference ), ( .generalPractitioner[1] | ( .extension[] | .url, ( .valueCodeableConcept | .coding[] | .system, .code ) ), .reference ) ] | @csv
整理一下,过滤表达式为:
[
( .generalPractitioner[0] |
( .extension[] |
.url,
( .valueCodeableConcept |
.coding[] |
.system,
.code
)
),
.reference
),
( .generalPractitioner[1] |
( .extension[] |
.url,
( .valueCodeableConcept |
.coding[] |
.system,
.code
)
),
.reference
),
] | @csv
我收到了这条消息:
jq: 错误 (at :55): 无法迭代 null (null)
第二个generalPractitioner 对象仅包含 1 个元素。
我知道我正在尝试访问一个不存在的元素。
我不太清楚如何使用默认的null 对象来解决它。
我想要得到的是:
.generalPractitioner[0].extension[0].url // null, .generalPractitioner[0].extension[0].valueCodeableConcept.coding[0].system // null, .generalPractitioner[0].extension[0].valueCodeableConcept.coding[0].code // null, .generalPractitioner[0].reference // null,
.generalPractitioner[1].extension[0].url // null, .generalPractitioner[0].extension[0].valueCodeableConcept.coding[0].system // null, .generalPractitioner[1].extension[0].valueCodeableConcept.coding[0].code // null, .generalPractitioner[1].reference // null,
.generalPractitioner[2].extension[0].url // null, .generalPractitioner[0].extension[0].valueCodeableConcept.coding[0].system // null, .generalPractitioner[2].extension[0].valueCodeableConcept.coding[0].code // null, .generalPractitioner[2].reference // null,
.generalPractitioner[3].extension[0].url // null, .generalPractitioner[0].extension[0].valueCodeableConcept.coding[0].system // null, .generalPractitioner[3].extension[0].valueCodeableConcept.coding[0].code // null, .generalPractitioner[3].reference // null
有什么想法吗?
【问题讨论】:
-
检查manual 中的“错误抑制/可选运算符”
?和“替代运算符”//。根据您的最终目标,使用.extension[]?可能已经足够了。 -
我已经尝试添加
extension[]?位现在我面临这个问题:csv 行应该有content...,,,,但我只得到content,。我怎么能强制添加空值(csv commas,,)? -
您上一个问题的answer 可能正好解决了这个问题。
-
我正在尝试调整您的方法。你能给我一些帮助吗? jqplay I'm currently working。我真的很感激你的帮助。
-
我已经编辑了帖子,并附上了一些我需要得到的额外解释。我已经发布了一个非常粗略的代码......但这是我需要得到的......
标签: jq