jq将命名数组转换为列表

时间:2019-06-16 04:51:11

标签: json jq

如何获取命名数组的名称,将其作为元素插入其中,然后删除名称?

{
  "l1": {
    "v1": {
      "a": [1],
      "b": [2]
    },
    "v2": {
      "a": [3],
      "b": [4]
    }
  },
  "l2": {
    "v3": {
      "a": [5],
      "b": [6]
    },
    "v4": {
      "a": [7],
      "b": [8]
    }
  }
}

进入

[
  {
    "id": ["l1"],
    "v1": {
      "a": [1],
      "b": [2]
    },
    "v2": {
      "a": [3],
      "b": [4]
    }
  },
  {
    "id": ["l2"],
    "v3": {
      "a": [5],
      "b": [6]
    },
    "v4": {
      "a": [7],
      "b": [8]
    }
  }
]

名称("l1""l2")是先验的,其他内容也不是;我所知道的是,我想使用顶级名称并将其作为"id"命名的对象插入。

我相信这与Using jq, convert array of name/value pairs to object with named keys相反。

jq 'to_entries'

开始,但同时嵌入"key""value",而我真的只想添加(添加)"key",甚至更好地控制文字{key}来(例如){{ 1}}。

2 个答案:

答案 0 :(得分:2)

您对0 的看法正确无误:

to_entries

努夫说。

答案 1 :(得分:0)

这是一个有效的代码段。您可以在此基础上进行一种优化,以使用map而不是for in。但这只是有效

    onCloseClickHandler(e: any): void {
       setTimeout(() => {
      this.dialogRef.close(e);
    }, 5000);
  }