JSON初步认识
一、背景
曾经有一段时间,XML是互联网传输结构化数据的标准。但是XML过于繁琐、冗长。JSON2001年就开始应用了,2006年,DC才把Json提交给IETF.
与XML相比,Json是在JavaScript中读写结构化数据的更好的方式。
Json是一种数据格式,不是编程语言,不局限与JavaScript,很多语言都有针对Json的解析器和序列器。
Json可以表示三种类型值:简单值、对象、数组。JavaScript字符串与Json字符串最大的区别在于Json字符串必须使用双引号(单引号会导致语法错误)
二、语法
1.简单值:Json字符串必须使用双引号(不然会导致语法错误),JavaScript的字符串可单可双
2.对象:Javascript 与 Json稍有不同//Javascript:
var person = {
name: "Mike",
age: 29
};
//Javascript也可以这样写:
var person = {
"name": "Mike",
"age": 29
}; // 注意,必须有分号结尾,因为这是javascript语句
// Json的对象, 与javascript对象不同有2个地方,1.没有声明变量 2.末尾没有分号,因为它不是js语句
{
"name": "Mike",
"age": 29
}
3.数组:
// 下面是javascript中的数组字面量
var values = [25, "hi", true];
// JSON数组也没有变量与分号
[25, "hi", true]
三、核心优势
Json之所以流行,是因为可以把JSON数据结构解析为有用的JavaScript对象,在解析为JavaScript对象后,取数据极其简单
// 取得第三本书的书名
books[2].title
四、两个方法
早期JSON解析器基本上是用javascript的eval函数,因为JSON是Javasciprt语法的子集,所以eval能解析、解释并返回javasciprt的对象、数组。但是ES5对此进行规范,定义了全局JSON对象,它有以下两种方法:
// JSON.stringify() 把JavaScript对象序列化为JSON字符串
var book = {title: '《十万个为什么》'}
var jsonText = JSON.stringify(book)
console.log(jsonText)
// 输出字符串 {"title":"十万个为什么"}
// 该字符串不包含任何空格字符或缩进,值为undefined的任何属性会被跳过 // JSON.parse() 把JSON字符串解析为原生JavaScript值
var bookCopy = JSON.parse(jsonText)
// 这里的bookCopy与book具有相同属性,但是彼此独立,没有任何关系
五、两个方法的详细运用
5.1 JSON.stringify(js对象, 参数一/参数二, 参数三)
// 1) 参数一: 过滤器
var book = {
"title": "Professional JavaScript",
"authors": ["My name is Psg"],
year: 2017
}
var jsonText = JSON.stringify(book, ["title", "year"])
console.log(jsonText)
// 输出:{"title": "Professional JavaScript","year": 2017} // 2) 参数二: 函数(可传入两个参数:键-值)
jsonText = JSON.stringify(book, function(key, value) {
switch(key) {
case "authors":
return value.join(",")
case "year":
return 5000
case "title":
return undefined
default:
return value
}
})
console.log(jsonText)
// 输出:{"authors": ""My name is Psg","year": 5000}
// 注意,如果js对象转json字符串,值为undefined,会自动删除该键值对 // 3) 参数三: 字符串缩进
var jsonText = JSON.stringify(book, null, 4)
console.log(jsonText)
// 在控制台输出:
//{
// "title": "Professional JavaScript",
// "authors": ["My name is Psg"],
// year: 2017
//} // 看到没有,自动换行加缩进4个字符
5.1 JSON.parse(js对象, 参数二)
为什么叫参数二,是因为它和stringify的参数二一样,是一个函数,该函数也可以传入两个参数(键-值),用法一样,就重复了。
JSON初步认识的更多相关文章
- JSON初步
1.什么是JSON (1)JSON(Java Script Object Notation)是一种轻量级的数据交换语言, 以文本字符串为基础,且易于让人阅读 XML就是一个重量级的数据交换语言 (2) ...
- python 中的json解析库
当一个json 数据很大的时候.load起来是很耗时的.python中常见的json解析库有cjson,simplesjson,json, 初步比较了一下, 对于loads来讲 simplejson ...
- 怎么在.net里面解析JSON文件?
我在网上搜了好多的文章,讲了很多的方法.但是无一例外的都看不懂...可能是因为我在这方面是个白痴吧... 所幸的是,我搜到了一个博客,写的很是清晰,比我之前看的大片文章写的好多了,在这里:http:/ ...
- 超详细JSON解析步骤
JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式 具有良好的可读和便于快速编写的特性. 业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了 ...
- 动态加载与插件系统的初步实现(四):解析JSON、扩展Fiddler
按文章结构,这部分应该给出WCFRest项目示例,我想WinForm示例足够详尽了,况且WCFRest还不需要使用插件AppDomain那一套,于是把最近写的Fiddler扩展搬上来吧. Fiddle ...
- android 初步了解应用Gson 解析Json数据
1,因为没有服务器返回数据,对于Tomcat又懒得去配,所以我直接把数据写死到app中 先写一个实体类,便于操作 /** * 实体类 */ public class Person { int id ; ...
- JSON+YAML初步学习+ciscoconfparse
Git git clone 在github.com右上角点击加号创建新的repository 在Linux或Mac命令行下,找到你想存放这个repository的目录,然后git clone 某个re ...
- iOS彩票项目--第七天,初次读取json数据、KVC转模型技巧、运行时字典转模型以及初步对显示网页的操作并且跟踪标签
一.初次读取json数据 二.KVC转模型技巧,这里的技巧主要解决的是字典中的key 与 模型中有的属性对应不起来的时候 的解决办法 <方法1> <方法2>运行时字典转模型,运 ...
- python初步学习-python 模块之 json
json 模块 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写.一般API返回的数据大多是 JSON.XML,如果返回JSON的话,将获取 ...
随机推荐
- s6-4 TCP 数据段
传输控制协议 TCP (Transmission Control Protocol) 是专门为了在不可靠的互联网络上提供可靠的端到端字节流而设计的 TCP必须动态地适应不同的拓扑.带宽.延迟. ...
- JAVA EE:第一个例子(登录)
名称 代码 说明 web.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xm ...
- ie9上传文件
兼容ie9文件上传,解决ie9下提示下载或保存 如果不考虑ie9兼容性,实现[上传图片]大致的思路如下: 由于公司是将所有上传的图片都放到[代理服务器]里.所以[上传图片]其实是上传到[代理服务器]. ...
- N!中末尾有多少个0
问题:先从100!的末尾有多少零 => 再推广到 任意N!的末尾有多少个零 分析:首先想到慢慢求解出100!或N!,但计算机表示数有限,且要防止溢出. 则从数学上分析:一 ...
- ServiceStack.Redis记录
一.事务 (一)AcquireLock方法 1.说明:申请对一个Key加锁(期间其他对象不能访问). 2.带using的使用,或带过期时间参数,否则锁不会自动释放. using (RedisCache ...
- 安装kylin的艰难历程
前言:暑假里老师布置的任务没有完成,来到学校后马不停蹄的安装kylin,结果一路艰难险阻,搞了快两个星期都没有弄好....现在止步于hive阶段卡死...仅将之前的步骤记录下来以便重新安装时更加顺利. ...
- 在注册表中查看Windows10系统激活密钥的方法
1 2 3 4 5 6 7 分步阅读 百度经验:jingyan.baidu.com 激活Windows10系统(非自己使用激活密钥激活的系统)以后,我们不一定清楚激活密钥是什么.如果想查看自己电脑 ...
- 又见C++
一年了,重新学奥赛,感慨蛮多. 首先就是觉得去年白学了,MinGW操作基本上忘完了,cry: 然后发现做题速度还比不上刚学的,一道题能错三遍,依旧cry; 不过总算弄明白double和int,还找到了 ...
- HashMap内部结构及实现原理
简单介绍 在研究HashMap之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能 数组:采用一段连续的存储单元来存储数据.对于指定下标的查找,时间复杂度为O(1):通过给定值进行查找,需 ...
- spring 单元测试方法及其错误整理
spring 单元测试及其错误整理 目录: NO1 spring单元测试方法 - NO1.1 pom.xml文件中确认有下面依赖 - NO1.2 在需要测试的类上,或者新建的测试类上添加注解 - NO ...