gpt4 book ai didi

javascript - 排列 json 以匹配另一个 json 模板

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:48 25 4
gpt4 key购买 nike

我收到第一个 JSON,我想更改其结构,以便它与我的第二个 JSON 模板匹配

这是 JSON link我想将其格式化为 this

这是我到目前为止所做的:

for(i=0;i<json.option.length;i++)
{
var row=json.option[i];

if(!option.includes(row.option.option_id))
{
option.push({
option_id:row.option.option_id,
option_name:row.option.option_name,
max:row.option.max,
min:row.option.min,
value:row.option.value,
price:row.option.price
})
}


if(!option_group.includes(row.option_group_id))
{
option_group.push({
option_group_id:row.option_group_id,
option_group_name:row.option_group_name,
max:row.max,
min:row.min,
option:option
})
}
}

当第一个 JSON option.option_group_id 已经存在于数组中时,就会出现问题,它将不再添加任何对象。有办法做到这一点吗?

最佳答案

这是一个使用 Ramda.js 的解决方案

const data =  {
item_id: 1065,
item_name: "Drink",
item_price: 1,
option: [
{
max: 1,
min: 1,
option: {
max: 1,
min: 0,
option_id: 3426,
option_name: "Small",
price: 0,
value: 1
},
option_group_id: "drink_size",
option_group_name: "Size"
},
{
max: 1,
min: 1,
option: {
max: 1,
min: 0,
option_id: 3426,
option_name: "Medium",
price: 0,
value: 1
},
option_group_id: "drink_size",
option_group_name: "Size"
},
{
max: 1,
min: 1,
option: {
max: 1,
min: 0,
option_id: 3426,
option_name: "Large",
price: 0,
value: 1
},
option_group_id: "drink_size",
option_group_name: "Size"
},
{
max: 5,
min: 0,
option: {
max: 1,
min: 0,
option_id: 3580,
option_name: "Decaf",
price: 0,
value: 1
},
option_group_id: "coffee_extras",
option_group_name: "Extras"
},
{
max: 5,
min: 0,
option: {
max: 1,
min: 0,
option_id: 3581,
option_name: "Espresso Shot",
price: 30,
value: 1
},
option_group_id: "coffee_extras",
option_group_name: "Extras"
}
],
quantity_value: 1
}


const transformGroup = (group) =>
R.pipe(
R.mergeAll,
R.assoc("option", R.pluck("option", group))
)(group)

const transformOption = (option) =>
R.pipe(
R.groupBy(R.prop("option_group_id")),
R.map(transformGroup),
R.values,
)(option)

const transformData = (data) =>
R.pipe(
R.assoc("option_group", transformOption(data.option)),
R.dissoc("option"),
)(data)

console.log(transformData(data))
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

关于javascript - 排列 json 以匹配另一个 json 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56470441/

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