如何循环遍历 JSON 个对象以使用 jq 提取特定键值
How to loop through JSON objects to extract specific key values with jq
我是 Bash 脚本和 jq 的新手。我正在尝试从 JSON 对象中提取键值对 name
和 transcription.normalized
。
我已经学会了如何从名称中获取所有值的列表并分别进行标准化,但这并不是我真正想要的。
cat submission.json | jq '.documents[] .pages[] .fields[] .name, .documents[] .pages[] .fields[] .transcription.normalized'
我想知道我是否需要执行某种循环但不确定。我真的想要一个脚本,以我可以轻松转储到 CSV 文件的格式提取这 2 个字段。
这是 JSON 的示例。
{
"id": 1,
"state": "complete",
"substate": null,
"exceptions": [],
"name": "Sender Account Number",
"output_name": null,
"field_definition_attributes": {
"required": false,
"data_type": "Account Number",
"multiline": false,
"consensus_required": false,
"supervision_override": null
},
"transcription": {
"raw": "1685-0441-1",
"normalized": "168504411",
"source": "machine_transcription",
"data_deleted": false,
"user_transcribed": null,
"row_index": null
},
"field_image_url": "/api/v4/image/be167a88-9d1d-43bc-82b2-3d96d8c06656?start_x=0.3110429607297866&start_y=0.1052441592299208&end_x=0.5696909842243418&end_y=0.16043316955780607"
}
你不需要循环。并且 jq 可以从数组中生成 CSV。
jq -r '.documents[].pages[].fields[] | [.name, .transcription.normalized] | @csv' file
我是 Bash 脚本和 jq 的新手。我正在尝试从 JSON 对象中提取键值对 name
和 transcription.normalized
。
我已经学会了如何从名称中获取所有值的列表并分别进行标准化,但这并不是我真正想要的。
cat submission.json | jq '.documents[] .pages[] .fields[] .name, .documents[] .pages[] .fields[] .transcription.normalized'
我想知道我是否需要执行某种循环但不确定。我真的想要一个脚本,以我可以轻松转储到 CSV 文件的格式提取这 2 个字段。
这是 JSON 的示例。
{
"id": 1,
"state": "complete",
"substate": null,
"exceptions": [],
"name": "Sender Account Number",
"output_name": null,
"field_definition_attributes": {
"required": false,
"data_type": "Account Number",
"multiline": false,
"consensus_required": false,
"supervision_override": null
},
"transcription": {
"raw": "1685-0441-1",
"normalized": "168504411",
"source": "machine_transcription",
"data_deleted": false,
"user_transcribed": null,
"row_index": null
},
"field_image_url": "/api/v4/image/be167a88-9d1d-43bc-82b2-3d96d8c06656?start_x=0.3110429607297866&start_y=0.1052441592299208&end_x=0.5696909842243418&end_y=0.16043316955780607"
}
你不需要循环。并且 jq 可以从数组中生成 CSV。
jq -r '.documents[].pages[].fields[] | [.name, .transcription.normalized] | @csv' file