繁体   English   中英

JQ:将json数组中的位置添加到元素中

[英]JQ: add the position in the json array to the element

我实际上通过 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

这是您的要求的示例代码,请运行代码片段并检查您的要求

 var json1 ="{\\"country\\": [ { \\"ContinentCode\\": \\"EU\\", \\"ContinentGroup\\": 1, \\"CountryCode\\": \\"DE\\", \\"CountryName\\": \\"Germany\\", \\"CurrencyIndex\\" : 1}, { \\"ContinentCode\\": \\"AM\\", \\"ContinentGroup\\": 2, \\"CountryCode\\": \\"CA\\", \\"CountryName\\": \\"Canada\\", \\"CurrencyIndex\\" : 2}]}"; var json2 = "{\\"currency\\": [ { \\"Code\\": \\"EUR\\", \\"Name\\": \\"Euro\\" }, { \\"Code\\": \\"CAD\\", \\"Name\\": \\"Canadian Dollar\\" }]}"; var jsonParsed1 = JSON.parse(json1); var jsonParsed2 = JSON.parse(json2); var json3 = []; for(var i=0;i<jsonParsed1.country.length;i++){ var json3Object = {"Code":jsonParsed2.currency[i].Code,"Name":jsonParsed2.currency[i].Name,"Position":i+1}; json3.push(json3Object); } console.log(json3);
告诉我它是否对你有帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM