如何使用JQ和MAP从键值对复杂的JSON中获取对象列表?(活动活动) [英] How to get object list from key value pairs complex JSON using jq and map? (Active Campaign)

查看:24
本文介绍了如何使用JQ和MAP从键值对复杂的JSON中获取对象列表?(活动活动)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我关注了JSON。我想根据它们的CC角色获取键-值对对象。在本例中,有3个角色(演示者、审批者、客户)。演示者的类型为TO。另2例为CC型。我想要CC类型的。可以有更多,因为它是动态的。

JSON

{
   "Presenter_TO_Email": "roney@domain.com",
   "Approver_CC_Email": "tim@domain.com",
   "Customer_CC_Email": "alex@domain.com",   
   "Invoice": "001",
   "Date": "2022-02-14"   
}

输出

{
    "Approver": {
      "email_address": "tim@domain.com",
      "role": "Approver"
    },
    "Customer": {
      "email_address": "alex@domain.com",
      "role": "Customer"
    }
}

我可以使用this示例使用索引,但由于我使用的是较旧版本的jq,它抛出错误jq: error: INDEX/2 is not defined at <top-level>, line 1:

推荐答案

使用with_entries根据键和值进行更改:

jq '
  with_entries(
    (.key / "_CC_") as $key | select($key[1])
    | {key: $key[0], value: {email_address: .value, role: $key[0]}}
  )
'
{
  "Approver": {
    "email_address": "tim@domain.com",
    "role": "Approver"
  },
  "Customer": {
    "email_address": "alex@domain.com",
    "role": "Customer"
  }
}

Demo

这篇关于如何使用JQ和MAP从键值对复杂的JSON中获取对象列表?(活动活动)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆