这是我从服务器收到的 JSON 响应:
{
"GoUZm0F3r-rZ0tItdurVfPLCAfBGrnvF32": {
"entityId": "GoUZm0F3r-rZ0tItdurVfPLCAfBGrnvF32",
"mergePolicy": {
"id": "02596943-2bb0-497f-815c-ffc69bf4b9c0"
}
}
}
值“GoUZm0F3r-rZ0tItdurVfPLCAfBGrnvF32”始终随新响应而变化。我是否可以动态访问该值以在下一次 API 调用中重用它?
答案1
你可以用以下命令提取它jq
jq -r 'keys | .[0]'
答案2
使用米勒 ( mlr
),它能够在几种常见的结构化格式之间进行转换,我们可以让它读取 JSON 输入,将不幸标记的键重新标记为 just key
,压平数据并提取key.entityId
字段的值。输出采用“NIDX”(索引编号(工具包样式))格式,无标头,适合此应用程序。
$ mlr --j2n label key then flatten then cut -f key.entityId file.json
GoUZm0F3r-rZ0tItdurVfPLCAfBGrnvF32
该选项是(输入 JSON)和(输出 NIDX)--j2n
的简写。--ijson
--onidx
使用大致相同的操作jq
(一个非常常见的 JSON 处理器):
$ jq -r '.[].entityId' file.json
GoUZm0F3r-rZ0tItdurVfPLCAfBGrnvF32
在这两个命令中,我们并不真正关心顶级键,而是寻找entityId
内部结构中键的值。 JSON 文档通常应将数据存储在值中,而不是键中。如果他们不这样做,这是一个好兆头,他们应该使用数组来代替。