首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jq从JSON转储中提取最新的色调场景?

如何使用jq从JSON转储中提取最新的色调场景?
EN

Stack Overflow用户
提问于 2018-03-02 10:46:43
回答 1查看 114关注 0票数 1

当我传递场景名称时,我正在尝试使用jq查找色调场景的ID。问题是,如果我更新场景,它会使用分配给它的新ID创建另一个场景。因此,当我对场景进行更改时,会返回不止一个结果。如何找到最新的场景?我看到有一个对象是最新更新的。

这是我到目前为止所知道的:

代码语言:javascript
复制
curl -s ${BASEURL}/scenes/ | /usr/local/bin/jq -r -e --arg SCENENAME "${SCENENAME}" '. as $object | keys[] | select($object[.].name == $SCENENAME)'

下面是json输出:

代码语言:javascript
复制
  "FUX9A2m4LcuF6YG": {
    "name": "KitchenDay",
    "lights": [
      "6",
      "7",
      "10",
      "11"
    ],
    "owner": "43594f081bb6d23e9ccd254927fa47",
    "recycle": true,
    "locked": false,
    "appdata": {},
    "picture": "",
    "lastupdated": "2018-02-25T03:35:57",
    "version": 2   }
EN

回答 1

Stack Overflow用户

发布于 2018-03-02 11:43:11

在这个响应中,我将假设以下输入,这似乎抓住了问题的本质:

代码语言:javascript
复制
{
  "FUX9A2m4LcuF6YG": {
    "name": "KitchenDay",
    "lastupdated": "2018-02-25T03:35:57"
  },
  "later": {
    "name": "KitchenNight",
    "lastupdated": "2018-02-25T23:35:57"
  }
}

以此为输入,使用以下过滤器:

代码语言:javascript
复制
to_entries | [max_by(.value.lastupdated)] | from_entries

产生:

代码语言:javascript
复制
{
  "later": {
    "name": "KitchenNight",
    "lastupdated": "2018-02-25T23:35:57"
  }
}

这里的关键是"lastupdated“字段的最大值对应于最近的时间。

如果你只想要密钥名,你可以这样写:

代码语言:javascript
复制
to_entries | max_by(.value.lastupdated) | .key
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49062033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档