json - jq from_entries 函数适用于 'key' 但不适用于 'name'

标签 json jq

根据 the documentation from_entries 函数适用于看起来像 {"key": something, "value": something}{"name": something, "value": something} 的对象>。但是,第二种形式对我不起作用。文档中的示例有效:

$ echo '[{"key":"a", "value":1}, {"key":"b", "value":2}]' | jq from_entries
{
  "a": 1,
  "b": 2
}

但同样的例子,除了使用“name”而不是“key”之外:

$ echo '[{"name":"a", "value":1}, {"name":"b", "value":2}]' | jq from_entries
jq: error (at <stdin>:1): Cannot use null (null) as object key

这是为什么?我的jq版本是

$ jq --version
jq-1.5-1-a5b5cbe

最佳答案

遗憾的是,jq 1.5 不包含关于“名称”的增强。

(请注意 jq 1.5 文档正确宣传“名称”作为“键”的替代,而不是“名称”。)

您要么必须升级您的 jq,要么使用解决方法,例如:

map(with_entries(if .key == "name" then .key = "key" else . end))
| from_entries

或更笼统地说:

def from_entries(key; value):
  map( {(key): value} ) | add | . // {} ;

from_entries(.name; .value)

关于json - jq from_entries 函数适用于 'key' 但不适用于 'name',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51757559/

相关文章:

json - REST API 最佳实践 : args in query string vs in request body

json - 使用 jq 或替代命令行工具比较 JSON 文件

javascript - 更改完整日历输出?

json - MongoDB 在具有未知键的集合中查找

json - jq - 当我已经深入对象的子对象时,如何打印对象的父值?

json - 如果子对象存在于使用 jq 的对象数组中,如何修改它?

json - 将 JSON 文件中的所有时间戳转换为 bash 中的 unix 时间戳(Ubuntu)

json - 如何仅显示不是 jq 1.3 版数组或对象的顶级 JSON 条目?

arrays - jq:递归合并对象并连接数组

json - R - 如何在 mongolite 查询中传递值