首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用jq转换数组中的authorizedKey字段

使用jq转换数组中的authorizedKey字段
EN

Stack Overflow用户
提问于 2019-02-26 06:39:25
回答 1查看 54关注 0票数 0

给定以下结构:

代码语言:javascript
运行
复制
[
  {
    "authorizedKey": "0",
    "description": "This key is for system testing.",
    "keyExpiration": "2035-02-02T18:28:59Z",
    "keyId": "aaa12345-1234-1234-1234-1234567890ab"
  },
  {
    "authorizedKey": "1",
    "description": "This key is for system testing.",
    "keyExpiration": "2035-02-02T18:28:59Z",
    "keyId": "bbb12345-1234-1234-1234-1234567890ab"
  },
  {
    "authorizedKey": "1",
    "description": "This key is for system testing.",
    "keyExpiration": "2035-02-02T18:28:59Z",
    "keyId": "ccc12345-1234-1234-1234-1234567890ab"
  }
]

如果只使用jq,有没有办法把它转换成下面的结构?或者我需要把它包装在某种外部逻辑中?

代码语言:javascript
运行
复制
[
  {
    "authorizedKey": "zero",
    "description": "This key is for system testing.",
    "keyExpiration": "2035-02-02T18:28:59Z",
    "keyId": "aaa12345-1234-1234-1234-1234567890ab"
  },
  {
    "authorizedKey": "one",
    "description": "This key is for system testing.",
    "keyExpiration": "2035-02-02T18:28:59Z",
    "keyId": "bbb12345-1234-1234-1234-1234567890ab"
  },
  {
    "authorizedKey": "one",
    "description": "This key is for system testing.",
    "keyExpiration": "2035-02-02T18:28:59Z",
    "keyId": "ccc12345-1234-1234-1234-1234567890ab"
  }
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-26 06:54:52

这是可行的:

代码语言:javascript
运行
复制
map(. + {authorizedKey: {"0": "zero", "1": "one"}[.authorizedKey]})

如果除了0和1之外还有其他值,则可以将它们添加到映射中。如果你有更多,并且你想提高可读性,你可以这样做:

代码语言:javascript
运行
复制
{"0": "zero", "1": "one"} as $mapping |
  map(. + {authorizedKey: $mapping[.authorizedKey]})

这避免了在代码中间写入值映射。

这是因为+运算符是在jq中的对象上定义的,并且如果RHS中的键已经存在于LHS中,那么它的值将被替换为来自RHS的相应值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54875776

复制
相关文章

相似问题

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