首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JQ对对象和处理值的JSON数组进行映射

使用JQ对对象和处理值的JSON数组进行映射
EN

Stack Overflow用户
提问于 2022-09-13 10:14:09
回答 1查看 46关注 0票数 1

刚刚开始玩jq,我的生活无法接受我应该如何更干净地处理这个问题。我从AWS参数存储中获得了一些数据,作为JSON接收,我想要处理这些数据。

数据的结构如下

代码语言:javascript
运行
复制
[
    {
        "Name": "/path/to/key_value",
        "Value": "foo"
    },
    {
        "Name": "/path/to/key_value_2",
        "Value": "bar"
    },
    ...
]

我希望它以以下方式输出:key_value=foo key_value_2=bar。我的第一个想法是按如下方式处理它:map([.Name | split("/") | last, .Value] | join("=")) | join(" "),但随后得到以下错误:jq: error (at <stdin>:9): Cannot index array with string "Value"。这就好像在传递Value参数的值之后,对Name值的引用丢失了。

当然,我可以这样解决这个问题,但它很难看:map([.Value, .Name | split("/") | last] | reverse | join("=")) | join(" ")。如何处理Name的值而不丢失对Value的引用

编辑: JQ播放链接

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-13 10:22:35

代码语言:javascript
运行
复制
map((.Name | split("/") | last) + "=" + .Value) | join(" ")

将产出:

代码语言:javascript
运行
复制
"key_value=foo key_value_2=bar"

在线演示

“诀窍”是将.Name | split("/") | last)封装到()中,以便使.value仍然可用

如果您更喜欢串内插而不是(key) + .Value,您可以将其重写为:

代码语言:javascript
运行
复制
map("\(.Name | split("/") | last)=\(.Value)") | join(" ")

在线演示

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

https://stackoverflow.com/questions/73701211

复制
相关文章

相似问题

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