如何从curl返回的JSON数组中提取最早上传的应用条目?
解析curl响应并获取最早的uploaded_at条目
错误原因
你的curl请求返回的是JSON数组(外层由[]包裹),直接使用jq -r '.uploaded_at'会报错,因为数组无法通过字符串uploaded_at索引,必须先遍历数组内的每个对象。
正确命令示例
1. 获取所有uploaded_at字段值
curl -u "xxx:xxx" -X GET "$url" | jq -r '.[].uploaded_at'
.[].uploaded_at:遍历数组中的每个元素,提取每个对象的uploaded_at字段-r:输出原始字符串(不带JSON引号)
2. 排序后获取最早的日期值
由于返回的日期格式是YYYY-MM-DD HH:MM:SS UTC,字符串排序顺序与时间顺序一致,可直接排序后取第一个:
curl -u "xxx:xxx" -X GET "$url" | jq -r '.[].uploaded_at' | sort | head -n 1
3. 获取包含最早uploaded_at的完整对象
如果需要保留整个条目信息,而非仅日期:
curl -u "xxx:xxx" -X GET "$url" | jq 'sort_by(.uploaded_at) | first'
sort_by(.uploaded_at):按uploaded_at字段对数组排序first:取排序后的第一个元素(即最早的条目)
关于文件写入的问题
你尝试的-d @test.txt是用于POST请求提交数据的参数,不适用于GET请求。要将curl响应写入文件,应使用-o参数:
curl -u "xxx:xxx" -X GET "$url" -o response.json
之后可直接用jq处理该文件:
jq 'sort_by(.uploaded_at) | first' response.json
内容的提问来源于stack exchange,提问作者awhisler
相关产品推荐
相关产品推荐

