arrays - JQ:将json数组中的位置添加到元素中
问题描述
我实际上通过 API 接收到一个 json,其中包含几个具有不同信息的数组。其中两个阵列是间接链接的。数组 1 包含一个引用数组 2 中元素的数组位置的元素。我实际上正在转换该 json 以适应请求的要求并将其移动到数据库中。稍后需要在数据库中链接两个阵列的信息。所以我的想法是将一个具有数组位置的元素添加到数组2中。
例子:
原始数组一:
{
"country": [
{
"ContinentCode": "EU",
"ContinentGroup": 1,
"CountryCode": "DE",
"CountryName": "Germany",
"CurrencyIndex": 1
},
{
"ContinentCode": "AM",
"ContinentGroup": 2,
"CountryCode": "CA",
"CountryName": "Canada",
"CurrencyIndex": 2
}
]
}
数组原二:
{
"currency": [
{
"CODE": "EUR",
"Name": "Euro"
},
{
"Code": "CAD",
"Name": "Canadian Dollar"
}
]
}
新数组思路二:
{
"currency": [
{
"CODE": "EUR",
"Name": "Euro",
"Position": 1
},
{
"Code": "CAD",
"Name": "Canadian Dollar",
"Position": 2
}
]
}
我在 Windows 环境下使用 jq 1.5。我查看了手册,但发现没有内置功能可以将数组位置添加到元素中。有任何想法吗?
问候蒂莫
解决方案
要将数组索引添加到 arr2.json 中的数组元素,您可以使用reduce
:
jq -f program.jq arr2.json
其中 program.jq 包含:
.currency |= reduce range(0;length) as $i (.; .[$i].Position = 1+$i)
或者,假设您在 Windows 环境中:
jq ".currency |= reduce range(0;length) as $i (.; .[$i].Position = 1+$i)" arr2.json
推荐阅读
- javascript - 将数字更改为对象中的字符串 - javascript
- c++ - 使用 conan 和 cmake 编译会出现致命错误 LNK1104
- isabelle - 如何在 Isabelle 中引入 forall
- php - laravel typehint 集合
- html - 角度,侧边栏问题
- android - 为什么有时不会在 onResume() 中添加视图?
- multithreading - Google Apps 脚本和表格:appendRow() 定期覆盖最后一行,而不是在下面追加新行
- sql - 对不同格式的日期进行排序并选择小于 2 年的日期
- javascript - 如何在数组中资产对象
- r - 列表列表中每个元素的分布