【问题标题】:Unable to remove a key value pair from JSON string?无法从 JSON 字符串中删除键值对?
【发布时间】:2020-12-15 22:17:24
【问题描述】:

在执行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",
      "status" : 30,
      "user" : "user1"
}

【问题讨论】:

  • 您不能对字符串值使用删除运算符。

标签: javascript node.js json parsing


【解决方案1】:

如果你运行data.toString()),并得到你得到的输出,意味着data 不是一个对象。它可能是一个字符串。

如果你运行:

"hello".toString();

你得到“你好”。

如果你运行:

delete "hello".foo

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

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

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

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

【讨论】:

    【解决方案2】:
    let jsonobj = {
      "cid": "933227",
      "status": 30,
      "user": "user1",
    }
    
    delete jsonobj['cid']
    
    console.log(JSON.stringify(jsonobj));
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      相关资源
      最近更新 更多