当前位置: 首页 > news >正文

jsp和servlet网站开发正一品网站建设

jsp和servlet网站开发,正一品网站建设,深圳网站seo关键词,网站建设教程 mysql文章目录 JSON 的由来JSON 的基本语法JSON 的序列化简单使用stringify 方法之 replacerstringify 方法之 replacer 参数传入回调函数stringify 方法之 spacestringify 方法之 toJSONparse 方法之 reviver 利用 stringify 和 parse 实现深拷贝 json 相信大家一定耳熟能详#x… 文章目录 JSON 的由来JSON 的基本语法JSON 的序列化简单使用stringify 方法之 replacerstringify 方法之 replacer 参数传入回调函数stringify 方法之 spacestringify 方法之 toJSONparse 方法之 reviver 利用 stringify 和 parse 实现深拷贝 json 相信大家一定耳熟能详但是其实 json 在 JavaScript 中很多细节本文就来详细讲解 json 在 JavaScript 中那些隐藏的秘密 JSON 的由来 JSON 是一种数据格式而不是编程语言目前广泛用于客户端和服务器之间传输的数据格式JSON 全称 JavaScript Object NotationJavaScript 对象符号 JSON 是由Douglas Crockford构想和设计的一种轻量级资料交换格式算是 JavaScript 的一个子集虽然 JSON 被提出来的时候是主要应用 JavaScript 中但是目前已经独立于编程语言可以在各个编程语言中被广泛的使用 JSON 的基本语法 JSON 支持三种类型的值 简单值数字、字符串(不支持单引号)、布尔类型、null 类型对象值由key、value组成key是字符串类型并且必须添加双引号值可以是简单值、对象值、数组值数组值数组的值可以是简单值、对象值、数组值 tipsJSON 里面不能添加注释具体的写法大家应该都知道这里就不写示例代码了 JSON 的序列化 相信这个大家都知道在 JavaScript 中的 JSON 对象上存在两个方法 stringify 和 parse就可以实现序列化 序列化是将数据结构或对象转换为符合 JSON 格式的字符串的过程 简单使用 const obj {name: 张三,age: 18,frienfs: [{ name: 李四, age: 20 },{ name: 王五, age: 22 }],hobbies: [篮球, 足球, 乒乓球] }// 使用 stringify 方法转为 JSON 格式的字符串 const str JSON.stringify(obj)// 使用 parse 方法将一个 JSON 格式的字符串转为一个对象 const newObj JSON.parse(str)stringify 方法之 replacer stringify 方法的第一个参数大家都知道那第二个参数(replacer)了解吗 replacer 是一个可选参数replacer 的作用是指定需要想转换的值是一个数组或 null(全部转换) 如下 const obj {name: 张三,age: 18,friends: [{ name: 李四, age: 20 },{ name: 王五, age: 22 }],hobbies: [篮球, 足球, 乒乓球] }// 正常转换 const str1 JSON.stringify(obj) console.log(str1: , str1)// 排除 friends 和 hobbies const str2 JSON.stringify(obj, [name, age]) console.log(str2: , str2)结果如图 此时就可以发现只转换了我们需要的部分当我们存在这样的需求的时候使用这个参数是非常方便的 tips所有以 symbol 为属性键的属性都会被完全忽略掉即便 replacer 参数中强制指定包含了它们 stringify 方法之 replacer 参数传入回调函数 上述例子中可以一定程度上实现一些额外的需求但是针对高度自定义的需求还是有点无能为力那么此时我们可以给其参数改为传入一个回调函数 传入一个回调函数时会接收两个参数key 和 value而每一次进行序列转换的时候就会执行一次如下 const obj {name: 张三,age: 18,friends: [{ name: 李四, age: 20 },{ name: 王五, age: 22 }],hobbies: [篮球, 足球, 乒乓球] }const str JSON.stringify(obj, (key, value) {console.log(key, value)return value })console.log(str)执行结果如图 比如我们需要给 name 的值添加一个 符号并年龄 1如下 const obj {name: 张三,age: 18,friends: [{ name: 李四, age: 20 },{ name: 王五, age: 22 }],hobbies: [篮球, 足球, 乒乓球] }const str JSON.stringify(obj, (key, value) {if (key name) {return value }if (key age) {return value 1}return value })console.log(str)结果如图 stringify 方法之 space 此方法除了第二个参数还存在第三个参数(space)此参数的作用为指定缩进用的空白字符串用于美化输出 当 space 是一个数字时它代表有多少的空格上限为 10; 该值若小于 1则意味着没有空格如下 const obj {name: 张三,age: 18,friends: [{ name: 李四, age: 20 },{ name: 王五, age: 22 }],hobbies: [篮球, 足球, 乒乓球] }// 正常转换 const str1 JSON.stringify(obj) console.log(正常转换: , str1)// 2个空格 const str2 JSON.stringify(obj, null, 2) console.log(2个空格: , str2)结果如图 此时输出的结果就不是单纯的一行字符串而是经过美化的格式在一些调试查看数据的时候还是非常好用的 当 space 是一个字符串时则每一级别会比上一级别多缩进该字符串或该字符串的前 10 个字符如下 const obj {name: 张三,age: 18,friends: [{ name: 李四, age: 20 },{ name: 王五, age: 22 }],hobbies: [篮球, 足球, 乒乓球] }// 正常转换 const str1 JSON.stringify(obj) console.log(正常转换: , str1)// 空格时 const str2 JSON.stringify(obj, null, ) console.log(空格时: , str2)// 使用制表符\t来缩进 const str3 JSON.stringify(obj, null, \t) console.log(制表符\t: , str3)// 字符长度超出 10 const str4 JSON.stringify(obj, null, aaabbbcccdddeee) console.log(字符长度超出 10: , str4)正常转换时如图 空格时如图 制表符时如图 字符长度超出 10 时如图 stringify 方法之 toJSON 如果一个被序列化的对象拥有 toJSON 方法那么该 toJSON 方法就会覆盖该对象默认的序列化行为不是该对象被序列化而是调用 toJSON 方法后的返回值会被序列化 这个方法还是很好理解的就是原来是转换原对象但是如果有这个方法的话就会以我们这个方法的返回值为基准如下 const obj {name: 张三,age: 18,friends: [{ name: 李四, age: 20 },{ name: 王五, age: 22 }],hobbies: [篮球, 足球, 乒乓球],toJSON: function () {// 返回数字return 111} }console.log(toJSON: , JSON.stringify(obj))结果如图 同样可以更换为其他对象如下 const obj {name: 张三,age: 18,friends: [{ name: 李四, age: 20 },{ name: 王五, age: 22 }],hobbies: [篮球, 足球, 乒乓球],toJSON: function () {// 返回数字return {name: 李白,descripton: 一个浪漫的人}} }console.log(toJSON: , JSON.stringify(obj, null, 2))结果如图 parse 方法之 reviver reviver 也是一个函数执行时机在在 parse 函数返回之前所以也可也来进行拦截或者说修改解析前的原始值 使用如下 const str {name:张三,age:18,friends:[{name:李四,age:20},{name:王五,age:22}],hobbies:[篮球,足球,乒乓球]}const obj JSON.parse(str, (key, value) {if (key age) {return value 2}return value }) console.log(obj)输出如图 在生成的对象之后我们也可以发现年龄是发生了变化的 利用 stringify 和 parse 实现深拷贝 stringify 和 parse 搭配使用的时候可以完成深拷贝不敢存在一些限制比如函数循环引用symbol 等等一些清空都是无法使用这种方式完成深拷贝的 只需要先使用 stringify 方法将对象转为 JSON 字符串在使用 parse 方法进行解析即可配合使用如下 const obj {name: 张三,age: 18,friends: [{ name: 李四, age: 20 },{ name: 王五, age: 22 }],hobbies: [篮球, 足球, 乒乓球] }const obj2 JSON.parse(JSON.stringify(obj)) console.log(obj2: , obj2)console.log(修改 obj2 的 name 属性的值为田七)obj2.name 田七console.log(obj: , obj) console.log(obj2: , obj2)结果如图 可以看到obj 并没有因为修改了 obj2 的值而受到影响在一些简单的 JSON 形式的数据的对象时使用此方法是一种非常不错的选择
http://www.zqtcl.cn/news/267344/

相关文章:

  • 做网站友情链接的步骤wordpress文库主题
  • 网站模板用什么软件做泉州网站建设轩奇网讯
  • 网站开发必备人员网页设计图片居中代码
  • 网站列表页怎么做的百度seo优
  • 做网站销售好不好企业seo培训
  • 网站制作排版越南网站建设
  • 满城建设局网站我要买房网
  • 长沙百度提升排名南宁网站seo公司
  • 凡科网做网站怎样东莞寮步汽车城
  • 做百度网站费用多少基于html5的移动端网站开发
  • 专业做网站设计哪家好大型网站技术方案
  • 海外医疗兼职网站建设wordpress 最受欢迎主题
  • 网站改版方案案例入门级网页设计培训学员
  • 安徽优化网站运营平台
  • 小型企业网站设计教程面备案网站建设
  • 重庆业务外包网站建设办公室装修一般多少钱一个平方
  • 网站查询域名ip解析手机短视频网站的建设
  • 甘肃机械化建设工程有限公司网站微小店网站建设价格
  • 个人空间网站建设报告网络游戏交易平台
  • 深圳医疗网站建设中小企业网站功能
  • 汕头集团做网站方案建设网站要买空间吗
  • 宁波搭建网站专业展馆展厅设计公司深圳
  • 山东省建设工程电子信息网站广州开发区第一小学
  • 网站建设推广重要性河北高端网站建设
  • 网站的seo方案怎么做wordpress自动转内链
  • 番禺手机网站制作推广wordpress远程数据库
  • 企业网站seo外包 s深圳国内设计网站
  • 临海高端营销型网站建设地址免费网站alexa排名查询
  • 做企业网站的轻量级cms建设电子商务网站流程图
  • 淘宝网站设计分析国内在线免费服务器