理解 JSON 的数据储存工作原理及对象和文本间的转换方法
目标: 理解 JSON 的数据储存工作原理及对象和文本间的转换方法。
什么是 JSON?
JSON 是一种按照JavaScript对象语法的数据格式。虽然它是基于 JavaScript 语法,但它独立于JavaScript,这也是为什么许多程序环境能够读取(解读)和生成 JSON。
JSON可以作为一个对象或者字符串存在,前者用于解读 JSON 中的数据,后者用于通过网络传输 JSON 数据。 这不是一个大事件——JavaScript 提供一个全局的 可访问的 JSON 对象来对这两种数据进行转换。
一个 JSON 对象可以被储存在它自己的文件中,这基本上就是一个文本文件,扩展名为 .json, 还有 MIME type 用于 application/json
.
JSON 结构
我们已经可以推测出 JSON 对象就是基于 JavaScript 对象,而且这几乎是正确的。您可以把 JavaScript 对象原原本本的写入 JSON 数据——字符串,数字,数组,布尔还有其它的字面值对象。这允许您构造出一个对象树,如下:
{"squadName" : "Super hero squad","homeTown" : "Metro City","formed" : 2016,"secretBase" : "Super tower","active" : true,"members" : [{"name" : "Molecule Man","age" : 29,"secretIdentity" : "Dan Jukes","powers" : ["Radiation resistance","Turning tiny","Radiation blast"]},{"name" : "Madame Uppercut","age" : 39,"secretIdentity" : "Jane Wilson","powers" : ["Million tonne punch","Damage resistance","Superhuman reflexes"]},{"name" : "Eternal Flame","age" : 1000000,"secretIdentity" : "Unknown","powers" : ["Immortality","Heat Immunity","Inferno","Teleportation","Interdimensional travel"]}]
}
使用
.
或[]
访问对象内的数据访问对象中的对象,只需简单地链式访问(通过属性名和数组索引)。
superHeroes["members"][1]["powers"][2]//首先有变量名 superHeroes,储存对象 。
//在对象中我们想访问 members 属性,所以我们使用 ["members"]。
//members 包含有对象数组,我们想要访问第二个元素,所以我们使用[1]。
//在对象内,我们想访问 powers 属性,所以我们使用 ["powers"]。
//powers 属性是一个包含英雄技能的数组。我们想要第三个,所以我们使用[2]。
JSON 数组
前面我们已经说过,”我们已经可以推测出 JSON 对象就是基于 JavaScript 对象,而且这几乎是正确的“——我们说几乎正确的原因是数组对象也是一种合法的 JSON 对象,例如:
[{"name" : "Molecule Man","age" : 29,"secretIdentity" : "Dan Jukes","powers" : ["Radiation resistance","Turning tiny","Radiation blast"]},{"name" : "Madame Uppercut","age" : 39,"secretIdentity" : "Jane Wilson","powers" : ["Million tonne punch","Damage resistance","Superhuman reflexes"]}
]
上面是完全合法的 JSON。您只需要通过数组索引就可以访问数组元素,如[0]["powers"][0]
。
其他注意事项
- JSON 是一种纯数据格式,它只包含属性,没有方法。
- JSON要求在字符串和属性名称周围使用双引号。 单引号无效。
- 甚至一个错位的逗号或分号就可以导致 JSON 文件出错。您应该小心的检查您想使用的数据(虽然计算机生成的 JSON 很少出错,只要生成程序正常工作)。您可以通过像 JSONLint 的应用程序来检验 JSON。
- JSON 可以将任何标准合法的 JSON 数据格式化保存,不只是数组和对象。比如,一个单一的字符串或者数字可以是合法的JSON 对象。虽然不是特别有用处……
- 与 JavaScript 代码中对象属性可以不加引号不同,JSON 中只有带引号的字符串可以用作属性。
对象和文本间的转换
接收到一些 字符串作为 JSON 数据,然后我们想要将它转换为对象。当我们想要发送 JSON 数据作为信息,我们将需要转换它为字符串,我们经常需要正确的转换数据,幸运的是,这两个问题在web环境中是那么普遍以至于浏览器拥有一个内建的 JSON,包含以下两个方法。
parse()
: 以文本字符串形式接受JSON对象作为参数,并返回相应的对象。
stringify()
: 接收一个对象作为参数,返回一个对应的JSON字符串。
const json = { x: 5, y: 6 };
const str = JSON.stringify(json);
console.log(str); //"{"x":5,"y":6}"const obj = JSON.parse(str);
console.log(obj); //Object { x: 5, y: 6 }
参考:
JSON(JavaScript Object Notation)
使用JSON
理解 JSON 的数据储存工作原理及对象和文本间的转换方法相关推荐
- Elasticsearch 查询数据的工作原理是什么?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:8rr.co/GsAa 面试题 ES 写入数据的工作原理是什 ...
- ES 查询数据的工作原理是什么?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://8rr.co/GsAa 面试题 ...
- es 删除数据_es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?...
面试题 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗? 面试官心理分析 问这个,其实面试官就是要看看你了解不了解 es 的一些基 ...
- elasticsearch 工作原理_【154期】面试官:你能说说 Elasticsearch 查询数据的工作原理是什么吗?...
点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅 阶段汇总集 ...
- 轻松了解面试官心理!ElasticSearch写入数据的工作原理是什么? | 技术头条
戳蓝字"CSDN云计算"关注我们哦! 作者:手留余香 转自: Java架构沉思录 面试题 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene ...
- ElasticSearch面试 - es 写入数据的工作原理是什么啊?
ElasticSearch面试 - es 写入数据的工作原理是什么啊? 面试题 es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗? ...
- 深入浅出地理解STM32中的定时器工作原理
深入浅出地理解STM32中的定时器工作原理 一.如何实现延时 1 纯硬件电路 2 纯软件编程 3 可编程定时/计数器 二.可编程定时/计数器有哪些功能? 三.STM32F103 的定时器有哪些 1 基 ...
- 深入理解Kotlin协程suspend工作原理(初学者也能看得懂)
1. 概述 挂起函数是Kotlin协程最重要的一个特性,所有其他概念都建立在它的基础上.所以我们需要深入了解它的工作原理. 挂起协程意味着在中间停止它.这类似于玩游戏,当我们想暂停游戏时,可以先存档, ...
- 论宏观和微观角度理解二极管和三极管的工作原理
首先介绍有导体.绝缘体和半导体的概念. 对于生活中常见的材料如钢和铁材料,它们是导体,从微观角度来说,材料内部的电子在不同的层级上所有的能量是不同的,一般除了最高级的能级之外,在导体中,它的电子会保持 ...
最新文章
- python秒转换成小时分钟秒_1小时3分59秒!双11天猫交易额超1000亿元
- 递归 累加和累乘
- 如何保护你的 Python 代码—— 定制 Python 解释器
- Cocos2d-x 在缓存创建图片
- yarn install 遇到的错误消息 - Error EPERM operation not permitted, open .yarnrc
- 【模块化开发】之 Webpack、Rollup、Parcel
- Windows 10 SSH 下载地址
- 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_2 Mybatis的CRUD-保存操作
- 代码检测vc2013环境是否已经安装了
- 【通信原理 入坑之路】 —— 深入理解BPSK调制和解调的全过程及其Matlab实现
- dll文件懒加载_模块已加载,但对dllregisterServer的调用失败
- empty是什么意思 php,empty是什么意思中文翻译
- 电子计算机 划分发展阶段,电子计算机主要是以( )为标志来划分发展阶段的
- 关于 安装完MathType 后 Microsoft Word出现 53号错误 的解决方法
- python获取列表中某个元素个数_如何获取列表中的元素数?
- redhat安装配置Apache服务
- 扎克伯格----转自Jessica巨人
- 为什么要认证抖音蓝V?怎样申请抖音蓝V认证?
- BenchmarkSQL配置参数介绍
- 175Echarts - 象形柱图(Spirits)
热门文章
- SpringCloud微服务的熔断机制和熔断的意义?
- Excel 字符串拼接
- linux mysql使用教程_Linux 下MySQL的安装及基本使用
- 魔术方法php擎的区别,PHP基础知识之魔术方法
- 线速度、线加速度与参数化路径标量的速度、加速度之间的转换
- chatgpt智能提效职场办公-ppt怎么做流程图
- (赤焰剑C-SKY)2-HelloWorld
- python数组中逗号+冒号的使用
- RabbitMQ之Federation Exchange、Federation Queue、Shovel
- Surface SurfaceView SurfaceHolder