javascript - 我怎样才能转换json格式?
问题描述
第一个是来自源的确切数据格式,并希望转换为第二种格式。我无法更改来源,所以想更改为所需的格式。
我浏览了许多与我的问题相关的帖子,但我无法为我正在寻找的内容找到合适的解决方案。
JSON 格式
"data": [
{
"title": "Dog",
"channel_id": 1,
"channel_image": "some channel image url",
"playStationID": 1,
"playStationGener": "Dog0",
"playStationInfo": "blah blah",
"playStationName": "ABC1",
"playStationImage": "some image url",
"isFavorite": "NO"
},
{
"title": "Dog",
"channel_id": 1,
"channel_image": "some channel image url",
"playStationID": 2,
"playStationGener": "Dog1",
"playStationInfo": "blah blah",
"playStationName": "ABC2",
"playStationImage": "some image url",
"isFavorite": "NO"
},
{
"title": "Cat",
"channel_id": 2,
"channel_image": "some channel image url",
"playStationID": 4,
"playStationGener": "Cat0",
"playStationInfo": "blah blah",
"playStationName": "XYZ1",
"playStationImage": "some image url",
"isFavorite": "NO"
},
{
"title": "Cat",
"channel_id": 2,
"channel_image": "some channel image url",
"playStationID": 4,
"playStationGener": "Cat1",
"playStationInfo": "blah blah",
"playStationName": "ABC2",
"playStationImage": "some image url",
"isFavorite": "NO"
}
]
此格式必填
[
{
"title": "Dog",
"channel_id": 1,
"channel_image": "some channel image url"
"data": [
{
"playStationID": 1,
"playStationGener": "Dog0",
"playStationInfo": "blah blah",
"playStationName": "ABC1",
"playStationImage": "some image url",
"isFavorite": "NO"
},
{
"playStationID": 2,
"playStationGener": "Dog1",
"playStationInfo": "blah blah",
"playStationName": "ABC2",
"playStationImage": "some image url",
"isFavorite": "NO"
}
]
},{
"title": "Cat",
"channel_id": 2,
"channel_image": "some channel image url"
"data": [
{
"playStationID": 4,
"playStationGener": "Cat0",
"playStationInfo": "blah blah",
"playStationName": "XYZ1",
"playStationImage": "some image url",
"isFavorite": "NO"
},
{
"playStationID": 4,
"playStationGener": "Cat1",
"playStationInfo": "blah blah",
"playStationName": "ABC2",
"playStationImage": "some image url",
"isFavorite": "NO"
}
]
}
]
请帮忙!!提前致谢。
解决方案
您可以使用对象解构、Object.keys、Array.prototype.map轻松完成它。
const obj = {
data: [{
title: "Dog",
channel_id: 1,
channel_image: "some channel image url",
playStationID: 1,
playStationGener: "Dog0",
playStationInfo: "blah blah",
playStationName: "ABC1",
playStationImage: "some image url",
isFavorite: "NO",
},
{
title: "Dog",
channel_id: 1,
channel_image: "some channel image url",
playStationID: 2,
playStationGener: "Dog1",
playStationInfo: "blah blah",
playStationName: "ABC2",
playStationImage: "some image url",
isFavorite: "NO",
},
{
title: "Cat",
channel_id: 2,
channel_image: "some channel image url",
playStationID: 4,
playStationGener: "Cat0",
playStationInfo: "blah blah",
playStationName: "XYZ1",
playStationImage: "some image url",
isFavorite: "NO",
},
{
title: "Cat",
channel_id: 2,
channel_image: "some channel image url",
playStationID: 4,
playStationGener: "Cat1",
playStationInfo: "blah blah",
playStationName: "ABC2",
playStationImage: "some image url",
isFavorite: "NO",
},
],
};
const resObj = obj.data.reduce((acc, curr) => {
const {
title,
channel_id,
channel_image,
...rest
} = curr;
if (!acc[title]) {
acc[title] = {
title,
channel_id,
channel_image,
data: [rest],
};
} else {
acc[title]["data"].push(rest);
}
return acc;
}, {});
const result = Object.keys(resObj).map((x) => resObj[x]);
console.log(result);
推荐阅读
- c++ - 在linux中运行cpp程序时如何获取关键事件?
- graphql - Apollo Client TypeError: Object is not function
- c# - 在 c# 中使用 rsa 私钥对字符串进行签名并使用 openSSL 进行验证
- python - Python - 来自 pyodbc 的字典返回类型错误的结果
- php - php 错误提示“file_put_contents () 无法打开流”
- mysql - 获取每个子角色的“用户”
- log4j - 为什么 log4j2 在使用 %replace 时会打印双堆栈跟踪?
- terminal - 集成终端图标问题
- mysql - 根据条件查找行位置
- r - 使用 ggplot 修复饼图的正确布局