是否可以读取 JSON 响应的第一个值

是否可以读取 JSON 响应的第一个值

这是我从服务器收到的 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 文档通常应将数据存储在值中,而不是键中。如果他们不这样做,这是一个好兆头,他们应该使用数组来代替。

相关内容