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的话,将获取 ...
随机推荐
- font-size:0的妙用,用于解决inline或者inline-block造成的间隙
1.图片间的缝隙(图片间的间隙一般是由换行.缩进造成的) <div> <img src="1.jpg"> <img src="2.jpg&q ...
- 第一次OO总结
作业1——多项式加减法 看到这个名字就开始瑟瑟发抖了,毕竟一年前用C语言让我写这么一个程序都很头疼,什么堆栈啊还有结构都稀里糊涂的,更别说用一个完全没接触过的语言来完成最简单的一次作业.像我这样越老心 ...
- mysql 模糊查询条件带‘%’问题
- kvm-qcow2派生镜像的远程备份的方法!
在虚拟化环境中,关于虚拟机的远程备份是一个比较重要的环节,这个是有关于整个机房挂掉之后,仍然可以恢复的最后一招. 在kvm中这种情况可以通过直接备份虚拟机的镜像文件(qcow2)到远端存储解决. 但有 ...
- 虚拟机安装+配置federa
安装 安装好后发现鼠标卡卡的,在虚拟机的显示设置里面启用3D加速: 配置 查看 显卡信息:lspci |grep VGA 测试显卡驱动:glxgears 安装必要软件 安装右键打开终端:sudo yu ...
- js中创建对象的5种方法
1.原始模式 var dog = { name: jack, length: 70, wang:function(){ console.log(this.name); } 2.工厂模式(批量) fun ...
- ByteArrayInputStream
package org.example.io; import java.io.ByteArrayInputStream;import java.io.IOException; /** * ByteAr ...
- jQuery常用选择器总结
jQuery常用选择器总结: 我们都知道jQuery是JavaScript(JS)的框架,它的语法简单使用方便,被广大开发人员青睐.现在我就它常用的并且十分强大的选择器的方式,做一个总结.鉴于它的选择 ...
- [转] An Introduction to Mutual SSL Authentication
1. Introduction Mutual SSL authentication or certificate based mutual authentication refers to two p ...
- 通过代码定义shape/selector
public class DrawableUtil { /** * 定义一个shape资源 * * @param rgb * @param corneradius * @return */ publi ...