位置: IT常识 - 正文

JavaScript核心技术之JSON详解(javascript核心技术)

编辑:rootadmin
JavaScript核心技术之JSON详解 JSON是什么?

推荐整理分享JavaScript核心技术之JSON详解(javascript核心技术),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript的核心组成部分有哪些,javascript的核心组成部分有哪些,javascript的核心组成部分有哪些,javascript核心技术开发解密pdf,javascript核心技术开发解密,javascript的核心,javascript核心技术开发解密下载,javascript核心技术开发解密,内容如对您有帮助,希望把文章链接给更多的朋友!

JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。 

JSON源自于JavaScript,是一种轻量级(Light-Meight)、基于文本的(Text-Based)、可读的(Human-Readable)格式。

在现在的开发中,能够进行数据交换格式的,包括两个JSON   XML。

JSON是存储和交换文本信息的语法,类似 XML,JSON比 XML更小、更快,更易解析。

 那么,简而言之,对JSON的说明总结如下:

JSON是独立于任何编程语言的数据格式是一种用于存储和传输数据的轻量级格式语法是自描述的,便于人类阅读和理解JSON语法基本语法:数组(Array)用方括号 "[]" 表示对象(0bject)用大括号 "{}" 表示名称 / 值 对(name/value)组合成数组和对象名称( name )置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组并列的数据之间用逗号 "," 分隔名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值

需要注意的是:

JSON不支持注释。向 JSON添加注释无效

JSON文件的文件类型是 .json

JSON文本的 MIME 类型是 application/json

获取JSON数据

 json是以对象的形式存在的,直接获取JSON数据可通过如下方法:

1. json对象.键名

2. json对象["键名"]

3. 数组对象[索引]

4. 遍历 

JavaScript核心技术之JSON详解(javascript核心技术)

代码示例:

//定义基本格式 var person = { name: "张三", age: 23, gender: true }; var persons = [ { name: "张三", age: 23, gender: true }, { name: "李四", age: 24, gender: true }, { name: "王五", age: 25, gender: false }, ]; //获取person对象中所有的键和值 //for in 循环 /* for(var key in person){ //这样的方式获取不行。因为相当于 person."name" //alert(key + ":" + person.key); alert(key+":"+person[key]); }*/ //获取persons中的所有值 for (var i = 0; i < persons.length; i++) { var p = persons[i]; for (var key in p) { console.log(key + ":" + p[key]); } }

 输出结果为:

 JSON 解析与序列化(在JavaScript中)

先在控制台中打印一下JSON对象,看看有什么,如图:

 显而易见,在JavaScript中JSON对象仅有两个方法:parse和stringify。后面会详细介绍一下这两个方法

序列化的概念:序列化是将对象转化为字节序列的过程。对象序列化后可以在网络上传输,或者保存到硬盘上。

将对象序列化成json字符串: JSON.stringify(json对象);

反序列化:将json字符串反序列化为对象:   JSON.parse(str)

JSON.parse

API介绍:用来解析 JSON字符串,构造由字符串描述的 JavaScript 值或对象,传入的字符串不符合 JSON规范会报错

语法:

JSON.parse(str, reviver);str:要解析的 JSON字符串reviver:可选的函数 function(key,value),该函数的第一个参数和第二个参数分别代表键值对的键和值,并可以对值进行转换(函数返回值当做处理后的value)

代码示例:

// JSON.parse() 解析JSON字符串, 将JSON转换为对象 let json = '{"name": ["js", "webpack"], "age": 22, "gridFriend": "ljj"}'; console.log(JSON.parse(json)); // {name: Array(2), age: 22, gridFriend: 'ljj'} // 第二个参数是一个函数,key和value代表每个key/value对 let result = JSON.parse(json, (key, value) => { if (key == "age") { return `年龄:${value}`; } return value; }); console.log(result); //{name: Array(2), age: '年龄:22', gridFriend: 'ljj'} JSON.stringify

API介绍:将一个 JavaScript 对象或值转换为 JSON字符串

如果指定了一个 replacer 函数,则可以选择性地替换值,或者指定的 replacer 是数组,则可选择性地仅包含数组指定的属性

语法:

JSON.stringify(value, replacer, space)

value:将要序列化成 一个 JSON 字符串的值

replacer:

如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中如果该参数为 null 或者未提供,则对象所有的属性都会被序列化

space:指定缩进用的空白字符串,用于美化输出

如果参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格如果该参数为字符串(当字符串长度超过10个字母,取其前10个字母),该字符串将被作为空格如果该参数没有提供(或者为 null),将没有空格

代码示例:

let obj = { name: "jsx", age: 22, lesson: ["html", "css", "js"], }; let json = JSON.stringify(obj); console.log(json); // {"name":"jsx","age":22,"lesson":["html","css","js"]} // 第二个参数replacer 为函数时,被序列化的值得属性都会经过该函数转换处理 function replacer(key, value) { if (typeof value === "string") { return undefined; } return value; } let result = JSON.stringify(obj, replacer); console.log(result); // {"age":22,"lesson":[null,null,null]} // 当replacer参数为数组,数组的值代表将被序列化成 JSON 字符串的属性名 let result1 = JSON.stringify(obj, ["name", "lesson"]); // 只保留 “name” 和 “lesson” 属性值 console.log(result1); // {"name":"jsx","lesson":["html","css","js"]} // 第三个参数spcae,用来控制结果字符串里面的间距 let result2 = JSON.stringify(obj, null, 4); console.log(result2); /*{ "name": "jsx", "age": 22, "lesson": [ "html", "css", "js" ] }*/

 注意:如果replacer是一个函数,则该函数会进行深处理,即如果键值对的值也是一个数组,则也会执行该函数

JSON.stringify()原理转换值如果有 toJSON() 方法,该方法定义什么值将被序列化非数组对象的属性不能保证以特定的顺序出现在序列化后的字符串中布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值,undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)。函数、undefined 被单独转换时,会返回 undefined,如JSON.stringify(function(){}) or JSON.stringify(undefined)对包含循环引用的对象(对象之间相互引用,形成无限循环)执行此方法,会抛出错误所有以 symbol 为属性键的属性都会被完全忽略掉,即便 replacer 参数中强制指定包含了它们Date 日期调用了 toJSON() 将其转换为了 string 字符串(同Date.toISOString()),因此会被当做字符串处理NaN 和 Infinity 格式的数值及 null 都会被当做 null其他类型的对象,包括 Map/Set/WeakMap/WeakSet,仅会序列化可枚举的属性
本文链接地址:https://www.jiuchutong.com/zhishi/298805.html 转载请保留说明!

上一篇:Win11装了VMware后找不到wifi网络的解决方法(虚拟机安装win11提示无法运行)

下一篇:Qt+OpenCV(一)Qt基础操作和使用opencv初识(qt+opencv教程)

  •  网络推广应该从以下三点来着手进行 (网络推广应该怎么做)

    网络推广应该从以下三点来着手进行 (网络推广应该怎么做)

  • 解密营销中的关键人物法则(营销的十六个关键词)

    解密营销中的关键人物法则(营销的十六个关键词)

  • vivox70pro+怎么开启个人热点(vivox70pro怎么开热点)

    vivox70pro+怎么开启个人热点(vivox70pro怎么开热点)

  • oppo手机怎么设置屏幕锁(oppo手机怎么设置锁屏密码)

    oppo手机怎么设置屏幕锁(oppo手机怎么设置锁屏密码)

  • 苹果12电池多大(苹果12电池多大能撑多久)

    苹果12电池多大(苹果12电池多大能撑多久)

  • 手机微信误卸载了怎样恢复(手机微信误卸载了怎样恢复微信密码)

    手机微信误卸载了怎样恢复(手机微信误卸载了怎样恢复微信密码)

  • 红米note8pro的nfc感应区在哪(红米note8pro的nfc怎么复制门禁卡)

    红米note8pro的nfc感应区在哪(红米note8pro的nfc怎么复制门禁卡)

  • 西门子和法兰克编程的区别(西门子和法兰克哪个好用)

    西门子和法兰克编程的区别(西门子和法兰克哪个好用)

  • 设计表要定义哪些内容(设计表的结构要考虑哪些问题)

    设计表要定义哪些内容(设计表的结构要考虑哪些问题)

  • win10检测不到内置摄像头(win10搜索不到wifi信号)

    win10检测不到内置摄像头(win10搜索不到wifi信号)

  • 微信聊天怎么弄小窗口 (苹果一边看视频一边微信聊天怎么弄)

    微信聊天怎么弄小窗口 (苹果一边看视频一边微信聊天怎么弄)

  • 腾讯会议解除静音什么意思(腾讯会议解除静音是开着还是关着)

    腾讯会议解除静音什么意思(腾讯会议解除静音是开着还是关着)

  • 暂不支持该格式播放怎么办(暂不支持该格式视频上传,转成MP4)

    暂不支持该格式播放怎么办(暂不支持该格式视频上传,转成MP4)

  • 软件不兼容是什么意思(软件不兼容是什么问题)

    软件不兼容是什么意思(软件不兼容是什么问题)

  • 微信找回密码回执单号是什么 (微信找回密码回执单号是什么)

    微信找回密码回执单号是什么 (微信找回密码回执单号是什么)

  • 苹果11锁屏后自动亮屏(苹果11锁屏后自动亮度)

    苹果11锁屏后自动亮屏(苹果11锁屏后自动亮度)

  • 特效是什么意思(抖音特效是什么意思)

    特效是什么意思(抖音特效是什么意思)

  • 淘宝退货时间一般多久(淘宝退货时间一般多长)

    淘宝退货时间一般多久(淘宝退货时间一般多长)

  • 荣耀20s能插耳机吗(荣耀20s插耳机的地方在哪)

    荣耀20s能插耳机吗(荣耀20s插耳机的地方在哪)

  • 淘宝延长收货什么意思(淘宝延长收货什么意思 点了会怎么样?)

    淘宝延长收货什么意思(淘宝延长收货什么意思 点了会怎么样?)

  • 华为p30pro视频美颜怎么设置(华为p30pro视频美颜)

    华为p30pro视频美颜怎么设置(华为p30pro视频美颜)

  • 耳机有电流声小妙招(耳机声音有电流)

    耳机有电流声小妙招(耳机声音有电流)

  • arraylist线程安全吗(arraylist线程安全的吗)

    arraylist线程安全吗(arraylist线程安全的吗)

  • 手机电路板坏了能修吗(手机电路板坏了是什么原因)

    手机电路板坏了能修吗(手机电路板坏了是什么原因)

  • iqoonfc怎么添加门禁(iqoo3nfc怎么添加)

    iqoonfc怎么添加门禁(iqoo3nfc怎么添加)

  • 滴滴快车行程单如何打印(滴滴快车行程单模板)

    滴滴快车行程单如何打印(滴滴快车行程单模板)

  • 设计模式——单例模式(《设计模式》)

    设计模式——单例模式(《设计模式》)

  • 增值税发票记账联和抵扣联都丢了怎么办
  • 什么是纳税地点?
  • 结转结余属于什么科目
  • 银行存款出现负数算不算违规
  • 售后回租利息可以抵税吗
  • 城建税计提与缴纳分录
  • 工程机械租赁税点
  • 哪个会计科目必须对全部项目发函证
  • 抵扣白条账单是怎么回事
  • 农产品收购发票可以跨区域开吗
  • 房产税原值是否包括土地
  • 个税手续费返还属于政府补助吗
  • 固定资产加速折旧税收优惠政策
  • 城市公交企业购置的公共汽车
  • 出口酒类产品需要什么
  • 报销油费如何写摘要及会计分录怎么做?
  • 预支备用金填请款单还是借支单
  • 应交税金的负数金额要怎么调整
  • 实收资本未实缴到位,是否缴纳印花税
  • 实收资本转出计入什么科目
  • 出租房屋房产税怎么算
  • 机动车统一发票税率多少
  • 增值税勾选平台在哪里
  • 出纳记账本如何手工记账
  • 教育费附加减免性质代码
  • 研发人员的工会经费计入研发费用吗
  • 小规模纳税人缴税计算
  • 小规模纳税人代账一年多少钱
  • 账面价值和账面成本的区别
  • 促销购买
  • 手机压缩包损坏怎么修复
  • 建筑公司能否开材料票
  • win11正式版问题
  • 产品设计费增值税怎么算
  • thinkphp query
  • redis网络模型 框架图
  • 都有哪些收据可以抵税
  • pytorch :OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading 【已解决】
  • 资产负债表日后期间是指
  • 保险赔款的会计分录
  • 深度学习中正样本、负样本、简单样本、困难样本的区别 (简单易懂)
  • showmount命令安装
  • php通讯
  • 车辆保险会计怎么做分录
  • 企业如何利用期货对冲风险怎么操作
  • 应交税费未交增值税
  • 冲红怎么做会计科目
  • 增值税申报表第18栏怎么来的
  • 管理费用和研发费用的关系
  • 发票报销原因
  • 小规模增值税申报未开票收入怎么填
  • 三栏式明细账的借或贷怎么写
  • 现金日记账怎么填
  • 无形资产摊销账面价值
  • 项目提前竣工借款合法吗
  • 损益类科目没有结平是什么意思
  • 一般纳税人支付房租账务处理
  • 企业项目的特点
  • 政府返税计入什么科目
  • 企业视同销售的情况都有哪些?
  • 计提人工成本会计分录
  • 酒店会计做账流程
  • 固定资产怎么录入系统
  • 内部资金管理实施细则
  • windows hellopin是什么意思
  • win8.1打开软件显示Error远程配置获取失败请重新启动
  • 系统自动设置网络连接
  • windows7怎么添加设备
  • jquery 限制文件大小
  • 快速掌握押韵技巧
  • dos字符串替换
  • shell脚本编程实例
  • nodejs webp
  • jQuery插件ajaxfileupload.js实现上传文件
  • delphi7教程
  • textview在哪
  • andriod中SimpleAdapter+listview,点击item 传值事件
  • 天津地税局网上营业厅
  • 成都国家税务局每个月交全民付的钱是什么
  • 求资金占用利息的公式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设