Transforming JSON data is a daily task for developers. This guide covers the most common transformation patterns.
Mapping JSON Arrays
Convert each item in an array:
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
}));
Filtering Data
Remove unwanted items:
const adults = users.filter(u => u.age >= 18);
const activeUsers = users.filter(u => u.status !== 'deleted');
Grouping by Property
Group data by a common field:
const groupBy = (arr, key) =>
arr.reduce((acc, item) => {
const group = item[key];
acc[group] = acc[group] || [];
acc[group].push(item);
return acc;
}, {});
// Group users by role
const byRole = groupBy(users, 'role');
Flattening Nested JSON
Convert nested structures to flat arrays:
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 }))
);
Picking and Omitting Fields
// Pick specific fields
const pick = (obj, keys) =>
Object.fromEntries(keys.map(k => [k, obj[k]]));
// Omit specific fields
const omit = (obj, keys) =>
Object.fromEntries(Object.entries(obj).filter(([k]) => !keys.includes(k)));
const publicUser = omit(user, ['password', 'token']);
Pivot Tables from JSON
Transform row data into summary tables:
const sales = [
{product: "A", month: "Jan", amount: 100},
{product: "B", month: "Jan", amount: 200},
{product: "A", month: "Feb", amount: 150}
];
const pivot = {};
sales.forEach(s => {
if (!pivot[s.product]) pivot[s.product] = {};
pivot[s.product][s.month] = s.amount;
});
Use our JSON to CSV converter when you need to export transformed data, or JSON Viewer to inspect results.