转换 JSON 数据是开发者的日常工作。本指南涵盖最常用的转换模式。
映射 JSON 数组
转换数组中的每个项目:
const users = [
{ firstName: "Alice", lastName: "Smith", age: 30 },
{ firstName: "Bob", lastName: "Jones", age: 25 }
];
const names = users.map(u => ({
fullName: ${u.firstName} ${u.lastName},
isAdult: u.age >= 18
}));
过滤数据
移除不需要的项目:
const adults = users.filter(u => u.age >= 18);
const activeUsers = users.filter(u => u.status !== 'deleted');
按属性分组
按公共字段分组数据:
const groupBy = (arr, key) =>
arr.reduce((acc, item) => {
const group = item[key];
acc[group] = acc[group] || [];
acc[group].push(item);
return acc;
}, {});
// 按角色分组用户
const byRole = groupBy(users, 'role');
展平嵌套 JSON
将嵌套结构转换为扁平数组:
const data = {
users: [
{ name: "Alice", posts: [{id: 1}, {id: 2}] },
{ name: "Bob", posts: [{id: 3}] }
]
};
const allPosts = data.users.flatMap(u =>
u.posts.map(p => ({ ...p, author: u.name }))
);
选取和排除字段
// 选取特定字段
const pick = (obj, keys) =>
Object.fromEntries(keys.map(k => [k, obj[k]]));
// 排除特定字段
const omit = (obj, keys) =>
Object.fromEntries(Object.entries(obj).filter(([k]) => !keys.includes(k)));
const publicUser = omit(user, ['password', 'token']);
使用我们的 JSON 转 CSV 工具导出转换后的数据,或使用 JSON 查看器 检查结果。