JSON数据增删改查全攻略:轻松格式化操作技巧
JSON数据增删改查全攻略:轻松格式化操作技巧
JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,因其易读易写的特性,已成为前后端数据交互、配置文件存储等场景的主流选择,在实际开发中,我们经常需要对JSON数据进行增加、删除、修改操作,本文将以核心操作“增删改”为重点,结合具体代码示例,带你系统JSON数据的格式化操作技巧。
JSON数据基础:认识“键值对”的集合
在操作JSON之前,先明确其基本结构:JSON数据分为对象(Object)和数组(Array)两种核心类型。
- 对象:用 包裹,由无序的“键值对”组成,键(key)必须是字符串(双引号包围),值(value)可以是字符串、数字、布尔值、数组、对象甚至null,
{ "name": "张三", "age": 25, "isStudent": false, "courses": ["数学", "英语"], "address": { "city": "北京", "district": "海淀区" } } - 数组:用
[]包裹,由有序的值列表组成,值可以是任意JSON类型,[ {"id": 1, "name": "商品A"}, {"id": 2, "name": "商品B"} ]
无论是增删改,本质都是对这两种结构中的“键”或“值”进行操作。
JSON数据“增加”操作:为新数据开辟空间
“增加”操作分为两类:向对象中添加新键值对、向数组中添加新元素,操作时需注意JSON的格式规范(如键必须双引号、值类型需匹配)。
向JSON对象中添加键值对
假设现有JSON对象 user:
{
"name": "李四",
"age": 30
}
要添加新字段 gender(性别)和 hobbies(爱好,数组类型),操作如下(以JavaScript为例):
// 原始JSON对象(实际开发中可能从API或文件读取,此处直接定义)
let user = {
"name": "李四",
"age": 30
};
// 添加字符串类型的键值对
user.gender = "男"; // 或 user["gender"] = "男";
// 添加数组类型的键值对
user.hobbies = ["篮球", "编程"];
// 操作后的user对象
console.log(user);
输出结果:
{
"name": "李四",
"age": 30,
"gender": "男",
"hobbies": ["篮球", "编程"]
}
注意:如果添加的键已存在,上述操作会“覆盖”原值(本质属于修改,详见后文)。
向JSON数组中添加元素
现有JSON数组 products(商品列表):
[
{"id": 1, "name": "手机"},
{"id": 2, "name": "电脑"}
]
添加新商品(id: 3, name: "平板"),可通过以下方式:
// 原始JSON数组
let products = [
{"id": 1, "name": "手机"},
{"id": 2, "name": "电脑"}
];
// 方式1:push() - 在数组末尾添加元素
products.push({"id": 3, "name": "平板"});
// 方式2:unshift() - 在数组开头添加元素
products.unshift({"id": 0, "name": "耳机"}); // 添加id为0的商品
// 操作后的products数组
console.log(products);
输出结果(push操作后):
[
{"id": 1, "name": "手机"},
{"id": 2, "name": "电脑"},
{"id": 3, "name": "平板"}
]
输出结果(unshift操作后):
[
{"id": 0, "name": "耳机"},
{"id": 1, "name": "手机"},
{"id": 2, "name": "电脑"}
]
JSON数据“删除”操作:清理不需要的数据
“删除”操作同样分为两类:删除对象中的键值对、删除数组中的元素,需注意,删除后JSON的结构完整性不能被破坏。
删除JSON对象中的键值对
现有JSON对象 student:
{
"name": "王五",
"age": 20,
"class": "高三(1)班",
"score": 85
}
要删除字段 score(成绩),可通过 delete 操作符或 Object destructuring(解构赋值,ES6+):
// 原始JSON对象
let student = {
"name": "王五",
"age": 20,
"class": "高三(1)班",
"score": 85
};
// 方式1:delete操作符(直接删除)
delete student.score;
// 方式2:解构赋值+剩余语法(ES6+,适用于需要保留其他字段时)
const { score, ...restStudent } = student;
student = restStudent; // restStudent包含除score外的所有字段
// 操作后的student对象
console.log(student);
输出结果:
{
"name": "王五",
"age": 20,
"class": "高三(1)班"
}
注意:delete 操作会改变原对象,且删除后键值为 undefined(但JSON序列化时会忽略该键)。
删除JSON数组中的元素
现有JSON数组 numbers:
[10, 20, 30, 40, 50]
要删除元素 30(索引为2),可通过 splice() 方法(推荐)或过滤(filter):
// 原始JSON数组 let numbers = [10, 20, 30, 40, 50]; // 方式1:splice(index, count) - 从指定索引删除count个元素 numbers.splice(2, 1); // 从索引2开始删除1个元素(即30) // 方式2:filter() - 返回新数组(不修改原数组,需重新赋值) numbers = numbers.filter(item => item !== 30); // 删除所有值为30的元素 // 操作后的numbers数组 console.log(numbers);
输出结果:
[10, 20, 40, 50]
注意:splice() 会直接修改原数组,而 filter() 返回新数组,需根据需求选择。
JSON数据“修改”操作:更新已有数据
“修改”操作的核心是“定位目标数据并更新值”,关键在于准确找到要修改的“键”或“索引”。
修改JSON对象中的键值对
现有JSON对象 book:
{: "JavaScript高级程序设计",
"author": "Nicholas C. Zakas",
"price": 99.00,
"isPublished": true
}
要将价格 price 修改为 00,作者 author 修改为“李雷”,操作如下:
// 原始JSON对象
let book = {: "JavaScript高级程序设计",
"author": "Nicholas C. Zakas",
"price": 99.00,
"isPublished": true
};
// 修改简单类型的值(数字、字符串、布尔值)
book.price = 89.00; // 或 book["price"] = 89.00;
book.author = "李雷";
// 修改嵌套对象中的值(假设增加出版社字段)
book.publisher = "人民邮电出版社"; // 若publisher不存在,则为“增加”操作
// 操作后的book对象
console.log(book);
输出结果:
{: "JavaScript高级程序设计",
"author": "李雷",
"price": 89.00,
"isPublished": true,
"publisher": "人民邮电出版社"
}
修改JSON数组中的元素
现有JSON数组 tasks(待办事项):
[
{"id": 1, "text": "写代码", "completed": false},
{"id": 2, "text": "调试", "completed": true},
{"id": 3, "text": "部署", "completed": false}
]
要将 id: 2 的



还没有评论,来说两句吧...