一、背景

  曾经有一段时间,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初步认识的更多相关文章

  1. JSON初步

    1.什么是JSON (1)JSON(Java Script Object Notation)是一种轻量级的数据交换语言, 以文本字符串为基础,且易于让人阅读 XML就是一个重量级的数据交换语言 (2) ...

  2. python 中的json解析库

    当一个json 数据很大的时候.load起来是很耗时的.python中常见的json解析库有cjson,simplesjson,json, 初步比较了一下, 对于loads来讲 simplejson ...

  3. 怎么在.net里面解析JSON文件?

    我在网上搜了好多的文章,讲了很多的方法.但是无一例外的都看不懂...可能是因为我在这方面是个白痴吧... 所幸的是,我搜到了一个博客,写的很是清晰,比我之前看的大片文章写的好多了,在这里:http:/ ...

  4. 超详细JSON解析步骤

    JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式 具有良好的可读和便于快速编写的特性. 业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了 ...

  5. 动态加载与插件系统的初步实现(四):解析JSON、扩展Fiddler

    按文章结构,这部分应该给出WCFRest项目示例,我想WinForm示例足够详尽了,况且WCFRest还不需要使用插件AppDomain那一套,于是把最近写的Fiddler扩展搬上来吧. Fiddle ...

  6. android 初步了解应用Gson 解析Json数据

    1,因为没有服务器返回数据,对于Tomcat又懒得去配,所以我直接把数据写死到app中 先写一个实体类,便于操作 /** * 实体类 */ public class Person { int id ; ...

  7. JSON+YAML初步学习+ciscoconfparse

    Git git clone 在github.com右上角点击加号创建新的repository 在Linux或Mac命令行下,找到你想存放这个repository的目录,然后git clone 某个re ...

  8. iOS彩票项目--第七天,初次读取json数据、KVC转模型技巧、运行时字典转模型以及初步对显示网页的操作并且跟踪标签

    一.初次读取json数据 二.KVC转模型技巧,这里的技巧主要解决的是字典中的key 与 模型中有的属性对应不起来的时候 的解决办法 <方法1> <方法2>运行时字典转模型,运 ...

  9. python初步学习-python 模块之 json

    json 模块 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写.一般API返回的数据大多是 JSON.XML,如果返回JSON的话,将获取 ...

随机推荐

  1. 【Solidity】学习(2)

    address 地址类型 40个16进制数,160位 地址包括合约地址和账户地址 payable 合约充值 balance,指的是当前地址的账户value,单位是wei this指的是当前合约的地址 ...

  2. 4-Django开发post、get接口

    一.创建django应用程序 方法一:创建django项目时直接创建应用程序 方法二:命令行创建 1.进入manage.py所在目录 2.执行常见命令:python manage.py startap ...

  3. bash基础特性1

    shell俗称壳(用来区别于内核),是指“提供使用者使用界面”的软件,就是一个命令行解释器. BASH是SHELL的一种,是大多数LINUX发行版默认的SHELL,除BASH SHELL外还有C SH ...

  4. sphinx-doc的中文搜索

    第一,你的系统需要安装jieba类库, pip install jieba 第二,接下来修改sphinx的conf.py文件,为项目设置为中文的搜索配置. # Language to be used ...

  5. 架构(一)JDK安装

    一 遇到的问题 问题1:安装jdk的时候,jdk解压失败? 我是通过wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b84 ...

  6. 1.1.4 PROB Greedy Gift Givers

    Greedy Gift Givers A group of NP (2 ≤ NP ≤ 10) uniquely named friends has decided to exchange gifts ...

  7. win7中调试Hotspot

    预置: 1.Visual Studio 2010 2.CYGWIN(设置到path中) 3.jdk(设置到path中) 4.Framework4(系统如果有就不需要安装) 5.win7 sdk 7.1 ...

  8. 常见的web攻击手段

    XSS:跨站脚本攻击 -典型实例为: 当用户在表达输入一段数据后,提交给服务端进行持久化.如果此用户输入的是一段脚本语言,而服务端 用户输入的数据没有经过转码.校验等就存入了数据库,在其他页面需要展示 ...

  9. 全栈开发工程师微信小程序-中

    全栈开发工程师微信小程序-中 多媒体及其他的组件 navigator 页面链接 target 在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram url 当前小程序内的跳转链 ...

  10. 第55节:Java当中的IO流-时间api(下)-上

    Java当中的IO流(下)-上 日期和时间 日期类:java.util.Date 系统时间: long time = System.currentTimeMillis(); public class ...