在JavaScript(jQuery)中移除JSON对象指定键的问题求助
移除JSON对象指定键的问题修复
你的代码核心错误在于:把JavaScript对象转成JSON字符串后,试图用delete操作符删除字符串里的键——delete只能操作对象的属性,而JSON.stringify返回的是字符串类型,根本不支持这种操作。
正确写法:直接操作JavaScript对象
如果你的数据源本身是JS对象(就像代码里定义的那样),直接在对象上删除属性即可,不需要先转成JSON字符串:
function test() { var obj = { "ID": "2196", "VERSION": "1-2022", "FILE": "2196.docx" }; console.log("原始对象: ", obj); delete obj['FILE']; // 直接删除对象的FILE属性 console.log("删除后的对象: ", obj); // 如果最终需要JSON字符串,最后再转换 var jsonStr = JSON.stringify(obj); console.log("最终JSON字符串: ", jsonStr); } test();
若需处理JSON字符串的场景
如果你的数据源是JSON字符串(比如从后端接口获取的响应),要先把它转成JS对象,删除属性后再转回字符串:
function test() { // 模拟从后端拿到的JSON字符串 var jsonStr = '{"ID": "2196","VERSION": "1-2022","FILE": "2196.docx"}'; console.log("原始JSON字符串: ", jsonStr); // 转成JS对象 var obj = JSON.parse(jsonStr); // 删除目标属性 delete obj.FILE; // 等价于 obj['FILE'] // 转回JSON字符串 jsonStr = JSON.stringify(obj); console.log("处理后的JSON字符串: ", jsonStr); } test();
额外提示
如果不想修改原对象(避免副作用),可以先拷贝一个新对象再删除属性:
// 浅拷贝,适用于无嵌套的简单对象 var newObj = {...obj}; delete newObj.FILE; // 或者用Object.assign var newObj = Object.assign({}, obj); delete newObj.FILE;
内容的提问来源于stack exchange,提问作者Jacques tambard
相关产品推荐
相关产品推荐

