当我传递场景名称时,我正在尝试使用jq查找色调场景的ID。问题是,如果我更新场景,它会使用分配给它的新ID创建另一个场景。因此,当我对场景进行更改时,会返回不止一个结果。如何找到最新的场景?我看到有一个对象是最新更新的。
这是我到目前为止所知道的:
curl -s ${BASEURL}/scenes/ | /usr/local/bin/jq -r -e --arg SCENENAME "${SCENENAME}" '. as $object | keys[] | select($object[.].name == $SCENENAME)'下面是json输出:
"FUX9A2m4LcuF6YG": {
"name": "KitchenDay",
"lights": [
"6",
"7",
"10",
"11"
],
"owner": "43594f081bb6d23e9ccd254927fa47",
"recycle": true,
"locked": false,
"appdata": {},
"picture": "",
"lastupdated": "2018-02-25T03:35:57",
"version": 2 }发布于 2018-03-02 11:43:11
在这个响应中,我将假设以下输入,这似乎抓住了问题的本质:
{
"FUX9A2m4LcuF6YG": {
"name": "KitchenDay",
"lastupdated": "2018-02-25T03:35:57"
},
"later": {
"name": "KitchenNight",
"lastupdated": "2018-02-25T23:35:57"
}
}以此为输入,使用以下过滤器:
to_entries | [max_by(.value.lastupdated)] | from_entries产生:
{
"later": {
"name": "KitchenNight",
"lastupdated": "2018-02-25T23:35:57"
}
}这里的关键是"lastupdated“字段的最大值对应于最近的时间。
如果你只想要密钥名,你可以这样写:
to_entries | max_by(.value.lastupdated) | .keyhttps://stackoverflow.com/questions/49062033
复制相似问题