概念区分:

1.JSON:(JavaScript Object Notation,js对象表示法);

2.JSON是为了数据交换设计的一种数据格式,而不是一种编程语言、有两个API、是一个JS对象;

3.JSON与js具有相同的语法格式,但是JSON并不从属于js;JSON 与 JS 的联系在于 JSON 使用了相同的语言层面表示,就是说你用 JS 写一个对象,与转换成的 JSON 字符串是相同的;

4.并非只有js才使用JSON,很多编程语言都有针对JSON的解析器和序列化器;

5.JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值;

6.JS 中 JSON 的两个转化方法分别是JSON.stringify和JSON.parse。

语法:

JSON的语法可以表示以下三种类型的值:

  • 1.简单值;
  • 2.对象;
  • 3.数组。

举例说明:

1.简单值:

  5//这是JSON表示数值5的方式; "Hello world"//JSON表示字符串的过程  

区别:

1)js字符串与JSON字符串的最大区别:JSON字符串必须使用双引号(单引号会导致语法错误);

2)布尔值与null也是有效的JSON形式。

2.对象:

①js中的对象字面量(是不是自己内心想象的JSON对象?key:value形式,Wrong!)

var person = { name:"王五", age:22 }

②JSON中的对象要求给属性加引号:

所以上面的的对象字面量又可以这样表示:

 var person = {
"name":"王五",
"age":22};

JSON表示上述对象的方式如下:

 {
"name":"王五",
"age":22
}

对比一下,有区别吗?

1.JSON中没有变量的概念,故并没有声明变量;

2.末尾没有分号。

谨记:对象的属性必须加双引号。

3.数组:

JSON数组采用JS中的数组字面量形式。

 var values = [25,"hello",true];//js中的数组字面量
 [25,"hello",true]    //JSON中的数组表示

果然,JSON数组中既没有变量也没有分号。


解析与序列化

1.JSON.stringify();

2.JSON.parse();

3.toJSON.

是不是耳熟能详的方法?还好有机会重温一下,也好改正自己的短处:

1.JSON对象有两个方法:stringify()以及parse(),其实就是把js对象序列化为JSON字符串和把JSON字符串解析为原生js值。默认情况下,JSON.stringify()输出的JSON字符串不包含任何的空格字符串或缩进;

2.当JSON.stringify()

接受一个参数的时候(上述情景),JSON就是把js对象序列化为JSON字符串;

当JSON.stringify()接受两个参数,且第二个参数为数组的时候,代表结果中只包含数组中列出的属性;而当第二个参数为函数时,情况稍微有点不一样,函数返回的值就是相应键的值。不过,当函数返回undefined,那么相应的属性会被忽略即被删除;

当其接受三个参数的时候,第三个参数用于控制结果中的缩进和空白符。

小结:

JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工具量。

JSON vs js:JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。

在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。
 
但是对象和数组是比较特殊且常用的两种类型。
 
对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为 {key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。
 
数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。

《JavaScript高级程序设计》:563-570页。

JSON概述的更多相关文章

  1. Newtonsoft.Json 概述

    有时候,在前后台数据交互或者APP与后台交互的时候,我们通常会使用Json进行数据交互,为此会使用到Newtonsoft.Json.dll 这个类库,这个类库非微软官方,但是下载量已经超过了数十万次, ...

  2. Json概述以及python对json的相关操作

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  3. Json概述以及python对json的相关操作(转)

    什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...

  4. Json概述以及python对json的相关操作《转》

    什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...

  5. json概述及python处理json等数据类型

    <一,概念> 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化(deserialization): ...

  6. JSON概述及其在JavaScript与Java中的应用(整理)

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成. 官网:http://json.org/ ...

  7. DataTable 转换成 Json的3种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...

  8. python 解析json loads dumps

    认识 引用模块 重要函数 案例 排序 缩进参数 压缩 参考 认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standa ...

  9. python 操作json

    认识 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - Dece ...

随机推荐

  1. 服务器Windows Server 2008 远程控制安全设置技巧

    为了保障服务器远程控制操作的安全性,Windows Server 2008系统特意在这方面进行了强化,新推出了许多安全防范功能,不过有的功能在默认状态下并没有启用,这需要我们自行动手,对该系统进行合适 ...

  2. Python内置函数(2)——divmod

    英文文档: divmod(a, b) Take two (non complex) numbers as arguments and return a pair of numbers consisti ...

  3. Mego开发文档 - 复杂查询

    复杂查询 Mego 还支持一些更高级的LLINQ查询写法,本文只列出一部分. 分组汇总查询 using (var db = new OrderManageEntities()) { var query ...

  4. 【原创】公司各个阶段 CTO 需要做什么?(上篇)

    CTO 是企业内技术最高负责人,对企业的发展起到至关重要的作用.但随着公司的不断发展,CTO 的工作重心也会不断变化.只有在正确的阶段做正确的事,才能更好地为公司做出贡献.我是空中金融 CTO ,TG ...

  5. 从Mybatis源码理解jdk动态代理默认调用invoke方法

    一.背景最近在工作之余,把开mybatis的源码看了下,决定自己手写个简单版的.实现核心的功能即可.写完之后,执行了一下,正巧在mybatis对Mapper接口的动态代理这个核心代码这边发现一个问题. ...

  6. zoj 3981 Balloon Robot

    https://vjudge.net/problem/ZOJ-3981 题意: 有m个座位,其中n个队伍坐在这些位置上,一个队伍一个座位.当一个队A了题之后,他们们会得到气球,假设他们在a时刻A题,但 ...

  7. Scrapy抓取Quotes to Scrape

    # 爬虫主程序quotes.py # -*- coding: utf-8 -*- import scrapy from quotetutorial.items import QuoteItem # 启 ...

  8. C#调用Python,报错No module named os

    C#调用Python 环境:Windows 8.1,已经安装Python2.7(C:\Python27),配置了环境变量. 已经安装VS2013,VS2017 1.安装IronPython 下载地址h ...

  9. Collection集合框架详解

    [Java的集合框架] 接口: collection      map list     set 实现类: ArryList   HashSet HashMap LinkList   LinkHash ...

  10. C# WinForm 富文本编辑器 用kindeditor实现本地图片只选取不上传到编辑器

    以下资料有参考网上其它童鞋作品,原作者看到务喷!!!! 以下资料有参考网上其它童鞋作品,原作者看到务喷!!!! 重要的事只要说两遍... 网上找了几天关于WinForm富文本编辑效果都不理想,各种坑, ...