一、背景

  曾经有一段时间,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. centos7.6 ssh远程链接配置

    1.firewall增加22端口号 增加方式有两种,直接编辑firewall的public.xml增加 vi /etc/firewalld/zones/public.xml 进入后按i健光标移动到zo ...

  2. C#反编译笔记

    碰到下面这种 public class DstBoneName : Enum { public int value__; ; } 还原为 public enum DstBoneName { cf_J_ ...

  3. java操作docker示例(docker-java)

    1.首先要修改docker服务器的 /usr/lib/systemd/system/docker.service,加入紫色框的配置 2.下载docker-java 的github源码 git clon ...

  4. Redis各种数据类型的应用场景

    redis是一种key values形式的非关系型数据库,通过内存存储,也可以把数据持久化到本地文件中. redis支持丰富的数据类型,String,list,set,zset,hash,下面说一下各 ...

  5. PostGIS集群

    postgresql集群:https://bbs.csdn.net/topics/390896906?page=1  https://blog.csdn.net/s465689853/article/ ...

  6. sublime text3如何在浏览器预览?

    插件: view-in-browser CTRL + ALT + V 打开浏览器 默认打开firefox,settings里面可修改. Sublime Text - View In Browser V ...

  7. HTML基本格式和文本元素(标签)介绍

    <!doctype html>//声明文档类型 <html lang="zh-cn">//文档开始,后面是声明是中文页面的意思,en是英语的意思 <h ...

  8. js的arguments到底是什么?

    类数组对象:arguments 总所周知,js是一门相当灵活的语言.当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做arguments ...

  9. qrcode.php

    <!doctype html><html><head> <meta charset="UTF-8"/> <meta name= ...

  10. docker 1 (ubuntu docker install)

    1.移除旧内核模块 sudo apt-get remove docker \ docker-engine \ docker.io 2. 添加https传输包 sudo apt-get update s ...