我希望将一组key value(空格分隔)的行转换为JSON.我希望用jq-1.5来做这个:

local.location.altitude   3.0
local.location.latitude   40.025495
local.location.longitude  -74.312501
local.orientation.pitch   0.0
local.orientation.roll    0.0
local.orientation.yaw     0.0
local.velocity.azimuth    0.0
local.velocity.elevation  0.0
local.velocity.magnitude  0.0

{
  "local.location.altitude": "3.0",
  "local.location.latitude": "40.025495",
  "local.location.longitude": "-74.312501",
  "local.orientation.pitch": "0.0",
  "local.orientation.roll": "0.0",
  "local.orientation.yaw": "0.0",
  "local.velocity.azimuth": "0.0",
  "local.velocity.elevation": "0.0",
  "local.velocity.magnitude": "0.0"
}

我正在try 以下命令:

./get-data | jq -R 'splits("\\s+")'
./get-data | jq -R 'splits("\\s+")|{ a : .[0], b : .[1] }

但无法让它工作.我觉得我很亲近.有人知道如何从{{key}} {{val}}{"key": "value"}吗?

推荐答案

以下是一些更适合jq 1.5的方法:

  • 使用capturefrom_entries
jq -Rn '[inputs | capture("(?<key>\\S+)\\s+(?<value>.+)")] | from_entries' 

Demo

  • 使用splitsreduce
jq -Rn 'reduce (inputs | [splits("\\s+")]) as [$k,$v] ({}; .[$k] = $v)'

Demo

  • 使用splitsadd
jq -Rn '[inputs | [splits("\\s+")] as [$k, $v] | {($k): $v}] | add'

Demo

Json相关问答推荐

Elasticsearch Go客户端错误:无效的SON格式:在中间件中索引文档时出错

使用Kotlin限制序列化类属性的允许整数值

使用JQ合并JSON列表中的对象

(已回答)JSON 读取函数返回未定义而不是预期值 - Typescript

将不带正文的 CURL POST 转换为 RESTRequest Delphi 代码 / 为 Dropbox API /get_current_account 端点编写 Delphi 代码

Jolt 不打印任何东西

使用 jolt 将对象数组转换为数组

如何使用 jq 在连续的 json 记录流上调用操作

JSON 的自定义编组器,可以是字符串或 map[string]string / map[string]bool

如何使用 serde_json 构建有状态的流式解析器?

JSONPath:查找子项目条件在字符串列表中的项目

将 JSON 解组为具有唯一元素的 map 切片

Go - JSON 验证抛出错误,除非我在 struct 中使用指针.为什么?

Json.NET SerializeObject 转义值以防止 XSS

Swift:如何从字典中删除空值?

Java JSON 序列化 - 最佳实践

在 Qt 4.7 中解析 JSON 的最简单方法

如何使用 Jackson 注释从 HttpResponse 反序列化 JSON 对象?

如何使用 Jackson 的 objectMapper 反序列化接口字段?

JSON键是否需要唯一?