无法从JSON字符串中删除键值对?

问题描述

console.log(data.toString())时,得到以下输出

{
      "cid":"9333227","status" : 30,"user" : "user1"
}

在执行console.log(data['cid'])之前执行删除操作,我得到undefined作为输出

我想删除cid键值对,以使console.log(data.toString())应该生成以下输出

{
      "status" : 30,"user" : "user1"
}

我先做delete data['cid'],然后再做console.log(data.toString())。但是,它仍在打印原始json

{
      "cid":"9333227","user" : "user1"
}

解决方法

如果运行data.toString())并获得输出,则意味着data不是对象。可能是字符串。

如果您运行:

"hello".toString();

您会收到“你好”。

如果您运行:

delete "hello".foo

您正在删除字符串上不存在的属性,该属性可以正常工作。它不会更改字符串的内容。

所以我认为您没有对象,您有JSON字符串。要对其进行变异,您需要先对其进行解析:

const obj = JSON.parse(data);
delete obj.cid;
console.log(obj);

如果需要将其转换回JSON字符串,则可以使用JSON.stringify()

,
let jsonobj = {
  "cid": "933227","status": 30,"user": "user1",}

delete jsonobj['cid']

console.log(JSON.stringify(jsonobj));

尝试使用JSON.stringify()而不是.toString()