如何使用JQ更改密钥的值? 我正在try 根据密钥的长度更改密钥的值.但它似乎并没有像预期的那样奏效.

echo '[{"kiwi": 3 }, {"apple" : 4} ]' | jq 'map(with_entries(.key |= "\(.)", .value |= (. | length)))'

实际yields :

[
  {
    "kiwi": 3
  },
  {
    "apple": 4
  }
]

所需输出-

[
  {
    "kiwi": 4
  },
  {
    "apple": 5
  }
]

推荐答案

你想要的

map( with_entries( .value = ( .key | length ) ) )

解释如下.


.value |= ( . | length )

大致相当于

.value = ( .value | . | length )

所以你实际上是在做3 | length4 | length.当给定一个数字时,length产生该数字.因此,这两个数字分别为34.

你想要的 the length of the key.

.value = ( .key | length )

同样,

.key |= "\(.)"

可以被看作是

.key = ( .key | "\(.)" )

由于密钥已经是一个字符串,所以这只是

.key = .key

而这根本没有任何作用.

Json相关问答推荐

最新版本的Deneb在数据溢出时不支持滚动

无法使用Jolt变换在嵌套的JSON中提取值

Jolt 转换数组对象并将某些字段移动到嵌套数组

Jolt 变换 - 如何用字段值重命名字段?

将 colly 包输出文本添加到 golang 中的映射

如果值不存在,则将值插入 JSON 数组

判断golang中解析的json响应中是否存在所需的json键(不是值)

jq搜索特定字符串并输出对应的父值

判断 JSON 中的对象,而不是条件中提到的对象

如何从 rails 中的 respond_to 方法生成 json?

避免 KeyError 的默认字典键

如何在 jQuery 中循环遍历 JSON 数组?

在 C# 中解析 Json rest api 响应

将错误消息作为 JSON 对象发送

对象序列化为 JSON(使用 Gson).如何在 UpperCamelCase 中设置字段名称?

如何在 MVC4 中将 Json 字符串输出为 JsonResult?

在浏览器中查看 JSON 文件

在 React 中访问子级的父级状态

如何向 json IAM 策略添加 comments ?

使用 JavaScriptSerializer() 反序列化 JSON 文件