jq 将对象键值映射到包含两者的对象数组
Posted
技术标签:
【中文标题】jq 将对象键值映射到包含两者的对象数组【英文标题】:jq map object key value to array of objects containing both 【发布时间】:2020-10-02 04:57:16 【问题描述】:我想将一个对象父键放入对象本身,并将每个键值对转换为一个数组
给定:
"field1":
"key1": 11,
"key2": 10
,
"field2":
"key1": 11,
"key2": 10
期望的输出
[
"name": "field1", "key1": 11, "key2": 10,
"name": "field2", "key1": 11, "key2": 10
]
我知道jq keys
会给我["field1", "field2"]
和jq '[.[]]'
会给我
[
"key1": 11, "key2": 10 ,
"key1": 11, "key2": 10
]
我想不出一种方法来组合它们,我应该怎么做?
【问题讨论】:
【参考方案1】:为每个键生成"name": <key>
形式的对象,并将其与键的值合并。
to_entries | map(name: .key + .value)
或:
[keys_unsorted[] as $k | name: $k + .[$k]]
【讨论】:
【参考方案2】:如下所示。使用 keys[]
获取 JSON 中的键列表,并通过索引每个对象的键添加新字段 name
。
jq '[ keys[] as $k | name: $k + .[$k] ]'
如果您想保持键的顺序,请使用keys_unsorted[]
。
【讨论】:
以上是关于jq 将对象键值映射到包含两者的对象数组的主要内容,如果未能解决你的问题,请参考以下文章
使用 AlamofireObjectMapper 将对象 json 数据映射到 2 个单独的数组中