JSON(JavaScript Object Notation)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁、易读、易于解析的特点,在前后端数据交互、API 设计、配置文件等领域广泛应用。下面是使用 JSON 传输数据的优缺点:

优点:
  1. 简洁、易读:JSON 格式的数据非常简洁易读,使用起来非常方便。可以轻松地通过文本编辑器或浏览器插件进行查看、编辑、调试。
  2. 易于解析:JSON 数据可以使用多种编程语言解析,支持主流的编程语言,如JavaScript、Java、Python、C#等,因此JSON数据格式具有良好的跨平台和可扩展性。
  3. 结构化数据:JSON数据是一种结构化的数据格式,具有良好的扩展性和兼容性,可以非常容易地扩展、更新、维护和重用。
  4. 跨域请求:JSON 支持跨域请求,允许在不同域名之间安全地传输数据。这使得使用 JSON 传输数据成为一个非常有用的选择。
缺点:
  1. 不适合传输大文件:JSON 是基于文本的格式,传输大文件时会占用较多的带宽和时间。
  2. 缺乏标准:虽然 JSON 是一种非常流行的数据交换格式,但是没有官方标准或规范,因此可能存在不同实现之间的差异性。
  3. 不支持注释:JSON格式不支持注释,因此无法在数据中添加注释,这可能会导致在一些场景下的不便利。
  4. 安全性:JSON 格式虽然支持跨域请求,但是如果没有正确地处理跨域请求,可能会导致安全问题。
JSON.parse(JSON.stringify())的缺点
  1. 如果obj里面有时间对象,则JSON.stringify后再JSON.parse的结果,时间将只是字符串的形式;
  2. 如果obj里有RegExp(正则表达式的缩写)、Error对象,则序列化的结果将只得到空对象;
  3. 如果obj里有函数、undefined,则序列化的结果会把函数或 undefined丢失;
  4. 如果obj里有NaN、Infinity和-Infinity,则序列化的结果会变成null
  5. JSON.stringify()只能序列化对象的可枚举的自有属性,例如 如果obj中的对象是有构造函数生成的, 则使用JSON.parse(JSON.stringify(obj))深拷贝后,会丢弃对象的constructor;
  6. 如果对象中存在循环引用的情况也无法正确实现深拷贝(可利用map结构辅助过滤);

综上所述,JSON 是一种非常便捷、灵活和可扩展的数据交换格式,独立于计算机各类语言,但在使用时需要注意其缺点,以确保数据的安全性和完整性。