杭州电子商务研究院

在 React 中使用键从 JSON 中删除数据

2020-11-09 08:00飞浪

介绍

JavaScript 对象表示法 (JSON) 是一种广泛流行的基于键值的数据格式,用于存储和传输数据。JSON 使用基本数据类型(例如字符串、布尔值、整数、小数、对象、数组和null)通过预定义的层次结构和键值对传输数据。由于其结构简洁且持久,大多数开发平台、No-SQL 数据库、REST、GraphQL 等都支持 JSON。

通过使用JSON API ,可以轻松将 JSON 字符串转换为 JavaScript 对象,以便使用点符号和键直接访问数据。内置的 JSON 支持允许您在 React 中轻松集成 REST API、数据管理和动态组件设计。本指南介绍了解析 JSON 数据并使用键作为输入对嵌套 JSON 对象执行删除操作的步骤。

创建 JSON 对象

JSON 对象使用一对花括号 ( {} )表示,键值使用冒号 ( : ) 分隔。可以使用单引号和双引号组合创建 JSON 字符串:

      let jsonStr = '{"name":"ABC", "age":10 }';
    

注意: JSON 字符串只能使用双引号来包裹键和值。使用单引号包裹 JSON 字符串。可以使用parse方法将jsonStr转换为 JavaScript 对象:

      let jsonObj = JSON.parse(jsonStr);
console.log(jsonObj.name, jsonObj.age); // ABC : 10
    

eval函数也用于解析:

      let jsonObj = eval('('+jsonStr+')');
    

不建议使用eval ,因为eval可能被利用作为漏洞来运行格式错误的指令,尽管与parse函数不同,eval可以转换用双引号括起来的 JSON 字符串:

      let jsonObj = eval('('+ "{'name':'ABC', 'age':10 }" +')');
    

使用正则表达式从 JSON 字符串中删除数据

正则表达式可用于使用replace函数查找和替换字符串的特定部分。一对带键的双引号可用于创建模式:

      let jsonStr = '{"name":"ABC", "age":10 }';
let key = "age";
let cleanJsonRegex = new RegExp(`,.*${key}.*[, ]`, "g");
let nameJsonStr = jsonStr.replace(cleanJsonRegex, "");
console.log(nameJsonStr); // "{\"name\":\"ABC\"}"
    

cleanJsonRegex对象定义了匹配特定键值对的模式,可以解释为:

  • ,匹配逗号字符
  • .*匹配零个或多个字符,除了行终止符 ( \n )
  • ${key}.*匹配key的精确值以及key后的零个或多个字符
  • [, ]匹配逗号或空格
  • g标志将匹配jsonStr中的所有可能匹配项

replace函数从jsonStr中查找并替换匹配的数据并返回结果字符串。

注意:正则表达式非常强大,但也很脆弱,因此请始终避免在复杂数据中使用正则表达式。

使用 JavaScript 对象从 JSON 中删除数据

JavaScript 对象提供了一种使用点符号和 JSON 数组索引来访问 JSON 数据的便捷方法。使用parse函数将 JSON 字符串转换为 JavaScript 对象:

      let jsonStr = '{"name":"ABC", "age":10, "phone":["1234567890","1234567890"]}';
let jsonObj = JSON.parse(jsonStr);
    

delete运算符可用于从 JavaScript 对象中删除键值对:

      delete jsonObj.name;
/* after delete
{
  age: 10,
  phone: ["1234567890", "1234567890"]
}
*/
    

或者,可以使用字符串键来删除键值对:

      let key = 'name';
delete jsonObj[key];
    

在 JavaScript 对象中使用字符串键的优点是它允许使用具有特殊字符的键:

      delete jsonObj['class.name'];
    

尖端

• 使用stringify将 JavaScript 对象转换为 JSON 字符串:

      let obj = {name: "ABC"};
console.log(JSON.stringify(obj));
    

• 使用toJSON获取日期对象的字符串表示形式。 • 为了获得更好的支持,请使用 typescript 进行静态类型检查支持。

结论

JSON 和 JavaScript 对象具有几乎相同的语法和内置浏览器支持,可将 JSON 字符串解析为 JavaScript 对象。始终优先使用 JavaScript 对象来访问 JSON 数据。祝您编码愉快!

曝光26827浏览1450