首先要知道JSON是一种轻量级的数据格式,不是一种编程语言,因此其他语言也可以使用。

一、JSON语法

JSON语法可以表现为下面三种值:

  1.简单值:字符串、数值、布尔值和null,如"hello json",3,false,null。但是JSON不支持undefined

  2.对象:一种复杂的数据类型,表示的是一组无序的键值对,栗子如下:

 {
"name":"guozhu",
"age":23,
"hobby":{
"sport":"bicyle",
"music":"guoge"
}
}//每个键值对中的值可以是简单值也可以是复杂数据类型的值

  3.数组:与对象一样也是复杂的数据类型,但是它表示的是一组有序的列表,因此可以通过索引值来访问。  

[
"xiaohua",23,{
"hobby":"bicyle",
"eat":"apple"
}
]//数组的值可以是简单值、复杂数据类型的值

二、JSON与JS

相同点:JSON简单值与JS语法相同

不同点:1.JSON字符串与JS字符串区别在于JSON字符串必须使用双引号

    2.JSON对象没有声明变量、没有末尾分号且对象的属性必须加双引号

    3.JSON数组与JSON对象一样没有变量和分号

三、JSON.stringify()方法

stringify()方法用于将JS对象转化为JSON字符串,此方法有三个参数:第一个参数JS对象、第二个参数过滤器、第三个参数是一个选项表示是否在JSON字符串中保留缩进

 // JS对象
var person = {
name:"xiaohua",
age:19
}
var joPerson = JSON.stringify(person);
console.log(joPerson);//{"name":"xiaohua","age":19}

上面代码只传入JS对象,打印结果已注释出来,可以看到stringify()输出的JSON字符串不包含空格字符或缩进

现在传入第二个参数过滤器(可以是一个数组或函数)打印一下

 var person = {
name:"xiaohua",
age:19,
}
var joPerson = JSON.stringify(person,["age"]);
console.log(joPerson)//{"age":19}

上面代码第二个参数传入的是一个数组,其中有一个字符串与person对象的属性相对应,打印出来的结果也只包含与其对应属性的值

现在传入第三个参数(数值或字符串)用于缩进

 var person = {
name:"xiaohua",
age:19,
}
var joPerson = JSON.stringify(person,null,"**");
console.log(joPerson);

打印出来的结果如下图

如上面代码传入的是一个字符串而非数值,则这个字符串在打印出来的JSON字符串中被用作缩进字符串

四、JSON.parse()方法

该方法用于将JSON字符串解析成JS对象

 var person = {
name:"xiaohua",
age:19,
}
var joPerson = JSON.stringify(person);
console.log(joPerson);//{"name":"xiaohua","age":19}
var jsPerson = JSON.parse(joPerson);
console.log(jsPerson);

上面代码先用JSON.stringify()方法将person对象转换成JSON字符串,再利用JSON.parse()方法将joPerson(JSON字符串)转换成JS对象

小结:

1.JSON是一个轻量级的数据格式

2.JSON使用JavaScript语法的子集表示对象、数组、字符串、数值、布尔值和null

3.JSON.stringify()方法将JS对象转换成JSON字符串

4.JSON.parse()方法将JSON字符串转换成JS对象

JSON详解的更多相关文章

  1. JSON详解(转)

    JSON详解 JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交换格 ...

  2. JSON详解(转载)

    JSON详解 阅读目录 JSON的两种结构 认识JSON字符串 在JS中如何使用JSON 在.NET中如何使用JSON 总结 JSON的全称是”JavaScript Object Notation”, ...

  3. javaScript系列:JSON详解

    JSON详解   JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交 ...

  4. Spring Boot 之使用 Json 详解

    Spring Boot 之使用 Json 详解 简介 Spring Boot 支持的 Json 库 Spring Web 中的序列化.反序列化 指定类的 Json 序列化.反序列化 @JsonTest ...

  5. 问题:JsonConvert;结果:JSON详解

    JSON详解 JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交换格 ...

  6. JSON详解+ C# String.Format格式说明+ C# ListView用法详解 很完整

    JSON详解 C# String.Format格式说明 C# ListView用法详解 很完整

  7. c++ json 详解

    一. 使用jsoncpp解析json Jsoncpp是个跨平台的开源库,首先从http://jsoncpp.sourceforge.net/上下载jsoncpp库源码,我下载的是v0.5.0,压缩包大 ...

  8. cookie、json详解

    什么是cookie 1.cookie是存储于访问者计算机中的变量2.cookie是浏览器提供的一种机制3.可以由js控制(设置.读取.删除)4.cookie可以实现跨页面全局变量可以跨越同域名下多个网 ...

  9. C# - JSON详解

    最近在做微信开发时用到了一些json的问题,就是把微信返回回来的一些json数据做一些处理,但是之前json掌握的不好,浪费了好多时间在查找一些json有关的转换问题,我所知道的方法只有把json序列 ...

随机推荐

  1. Firefox Portable Developer 52.0.0.6176-6178

    FirefoxPortableDeveloper-52.0.0.6176.7z 47.9 MB FirefoxPortableDeveloper-52.0.0.6178.7z 55.8 MB

  2. root切换

    1.su -i root.password 2.su passwd root pass pass su pass 3.su -val 一般用户名 4.

  3. 数据库 之MySQL 简单教程

      So Easy系列之MySQL数据库教程 1.   数据库概述 1.1.  数据库概述 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和 ...

  4. tomcat虚拟路径

    目的:减小项目大小,方便部署和资源共享 tomcat/conf/server.xml host 标签中添加 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: ...

  5. 【Juicer】 一个高效、轻量的前端 (Javascript) 模板引擎

    引用地址:http://juicer.name/docs/docs_zh_cn.html * 一个完整的例子 HTML 代码: <script id="tpl" type=& ...

  6. C/C++调试工具gdb

    关于Gdb的使用,请参考:http://blog.csdn.net/haoel/article/details/2879

  7. yii2 关联查询,分页设置

    1.MODEL 如关联user table public function getUser(){        return$this->hasOne(User::className(),['i ...

  8. Java研发岗位面试归类B(附答案)

    本文承接上文:Java研发岗位面试归类A(附答案): http://www.cnblogs.com/wp5719/p/5870243.html 答案自己网上找的,如有纰漏或错误,烦请指教. 七.数据库 ...

  9. 【Java EE 学习 76 下】【数据采集系统第八天】【通过AOP实现日志管理】【日志管理功能分析和初步实现】

    一.日志管理相关分析 1.日志管理是一种典型的系统级别的应用,非常适合使用spring AOP实现. 2.使用日志管理的目的:对系统修改的动作进行记录,比如对权限.角色.用户的写操作.修改操作.删除操 ...

  10. POJ 1066 Treasure Hunt (线段相交)

    题意:给你一个100*100的正方形,再给你n条线(墙),保证线段一定在正方形内且端点在正方形边界(外墙),最后给你一个正方形内的点(保证不再墙上) 告诉你墙之间(包括外墙)围成了一些小房间,在小房间 ...