gpt4 book ai didi

javascript - 将平面 json 转换为嵌套

转载 作者:行者123 更新时间:2023-11-30 15:22:23 27 4
gpt4 key购买 nike

我有以下 JSON

{
"rate_cards": [
{
"doctor_id": "xxxxxx",
"doctor_name": "Dr. Dre",
"practice_id": "xxxxx",
"is_owner": 0,
"policy_id": 1,
"policy_name": "GOLD Super Gold",
"payor_id": 1,
"payor_name": "AMEX",
"payor_registration_number": "AMEX123",
"payor_contact_email": "support@amex.com",
"payor_support_number": "PHONE",
"payor_logo_url": "url",
"doctors_policies_ratecards_id": 1,
"ratecard_activation_status": "Pending",
"ratecard_id": 1,
"ratecard_validity": "2017-04-17T13:16:58.000Z",
"ratecard_details": "{'Root Canal': 300, 'Consultation': 500}",
"onboarded_status": "Available"
},
{
"doctor_id": xxxxxx,
"doctor_name": "<NAME>",
"practice_id": "xxxxxx",
"is_owner": 0,
"policy_id": 2,
"policy_name": "GOLD Super Gold",
"payor_id": 1,
"payor_name": "AMEX",
"payor_registration_number": "AMEX",
"payor_contact_email": "support@amex.com",
"payor_support_number": "<PHONE>",
"payor_logo_url": "url",
"doctors_policies_ratecards_id": 2,
"ratecard_activation_status": "Pending",
"ratecard_id": 1,
"ratecard_validity": "2017-04-17T13:16:58.000Z",
"ratecard_details": "{'Root Canal': 300, 'Consultation': 500}",
"onboarded_status": "Available"
}
]
}

我想把它转换成

{
"payors": [
{
"payor_id": 1,
"payor_name": "AMEX",
"payor_registration_number": "AMEX",
"payor_contact_email": "support@amex.com",
"payor_support_number": "<PHONE>",
"payor_logo_url": "url",
"data": [
{
"doctor_id":xxxxx,
"doctor_name": "Dr. Dre",
"practice_id": xxxxxx,
"is_owner": 0,
"policy_id": 1,
"policy_name": "GOLD Super Gold",
"doctors_policies_ratecards_id": 1,
"ratecard_activation_status": "Pending",
"ratecard_id": 1,
"ratecard_validity": "2017-04-17T13:16:58.000Z",
"ratecard_details": "{'Root Canal': 300, 'Consultation': 500}",
"onboarded_status": "Available"
},
{
"doctor_id": xxxxxx,
"doctor_name": "name",
"practice_id": xxxxxxx,
"is_owner": 0,
"policy_id": 2,
"policy_name": "GOLD Super Gold",
"doctors_policies_ratecards_id": 2,
"ratecard_activation_status": "Pending",
"ratecard_id": 1,
"ratecard_validity": "2017-04-17T13:16:58.000Z",
"ratecard_details": "{'Root Canal': 300, 'Consultation': 500}",
"onboarded_status": "Available"
}
]
}
]
}

基本上我根据 payor_name 进行分组,这成为我嵌套结构的主要引用。我尝试使用 lodash groupBy 和 transform 但无法实现上述结构。任何对我能做的事情的帮助都将非常有用。

最佳答案

你可以通过 lodash 做到这一点(跳过一些键,处理它们)-

var data = {
"rate_cards": [
{
"doctor_id": "xxxxxx",
"doctor_name": "Dr. Dre",
"practice_id": "xxxxx",
"is_owner": 0,
"policy_id": 1,
"policy_name": "GOLD Super Gold",
"payor_id": 1,
"payor_name": "Amex",
"payor_registration_number": "AMEX123",
"payor_contact_email": "support@amex.com",
"payor_support_number": "PHONE",
"payor_logo_url": "url",
"doctors_policies_ratecards_id": 1,
"ratecard_activation_status": "Pending",
"ratecard_id": 1,
"ratecard_validity": "2017-04-17T13:16:58.000Z",
"ratecard_details": "{'Root Canal': 300, 'Consultation': 500}",
"onboarded_status": "Available"
},
{
"doctor_id": "xxxxx",
"doctor_name": "<NAME>",
"practice_id": "xxxxxx",
"is_owner": 0,
"policy_id": 2,
"policy_name": "GOLD Super Gold",
"payor_id": 1,
"payor_name": "AMEX",
"payor_registration_number": "AMEX",
"payor_contact_email": "support@amex.com",
"payor_support_number": "<PHONE>",
"payor_logo_url": "url",
"doctors_policies_ratecards_id": 2,
"ratecard_activation_status": "Pending",
"ratecard_id": 1,
"ratecard_validity": "2017-04-17T13:16:58.000Z",
"ratecard_details": "{'Root Canal': 300, 'Consultation': 500}",
"onboarded_status": "Available"
}
]
};

var newdata = _.reduce(data.rate_cards,
function( arr, item){
var index = _.findIndex(arr, { "payor_id" : item.payor_id});
if(index > -1){
arr[index].data.push(item);
} else {
arr.push({ "payor_id" : item.payor_id, "data" : [item] });
}
return arr;
},
[]
);

console.log({ "payors" : newdata});
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

关于javascript - 将平面 json 转换为嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43522269/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com