JSON简介
JSON的全称是JavaScript Object Notion,即JavaScript对象符号,它是一种轻量级的数据交换格式,JSON的数据格式既适合人来读/写,也适合计算机本身解析和生成。最早的时候,JSON是JavaScript语言的数据交换格式,后来慢慢法阵成一种语言无关的数据交换格式,这一点非常类似于XML。
JSON主要在类似于C的编程语言中广泛使用,这些语言包括C、C++、C#、Java、JavaScript、Perl、Python等。JSON提供了多种语言之间完成数据交换的能力,因此,JSON也是一种非常理想的数据交换格式。JSON主要有如下两种数据结构:
1、由key-value对组成的数据结构,这种数据结构在不同的语言中有不同的实现。例如,在JavaScript中是一个对象,在Java中是一种Map结构,在C语言中则是一个struct。在其他语言中,可能是record、dictionary、hash table等。
2、有序集合。这种数据结构在不同语言中,可能有list、vector、数组和序列等实现。
上面的两种数据结构在不同的语言中都有对应的实现,因此,这种简便的数据表示放肆完全可以实现跨语言,因此可以作为程序设计语言中通用的数据交换格式。在JavaScript中主要有两种JSON的语法,一种用于创建对象,另一种用于创建数组。
使用JSON语法创建对象
JSON语法创建对象是一种更简单的方式,使用JSON语法可避免书写函数,也可避免使用new关键字,而是直接获取一个JavaScript对象。对于早期的JavaScript版本,如果要使用JavaScript创建一个对象,通常情况下可能会这样写:
//定义一个函数,作为构造器
function Person(name , sex){
this.name = name;
this.sex = sex;
}
//创建一个Person实例
var p = new Person('yeeku', 'male');
//输出Person实例
alert(p.name);
从JavaScript1.2开始,创建对象有了一种更快捷的语法,语法如下:
var p = {"name":'yeeku',
"sex":'male'};
alert(p);
这种语法就是一种JSON语法。显然,使用JSON语法创建对象更加简捷、方便。
JSON创建对象object时,总以({)开始,以(})结束,对象的每个属性名和属性值之间以英文冒号(:)隔开,多个属性定义之间以英文逗号(,)隔开。语法格式如下:
object = {
propertyName1 : propertyValue1,
propertyName2 : propertyValue2,
... ...
}
必须注意的是,并不是每个属性定义后面都有英文逗号(,),必须在后面还有属性定义时才需要逗号(,)。
使用JSON语法创建JavaScript对象时,属性值不仅可以是普通字符串,也可以是任何基本数据类型,还可以是函数、数组甚至是另外一个JSON语法创建的对象。例如:
person = {
name : 'yeeku' ,
sex : 'male' ,
//使用JSON语法为其指定一个属性
son : {
name : 'nono',
grade : 1
} ,
//使用JSON语法为person直接分配一个方法
info : function()
{
document.writeln( "姓名 :" + this.name + "性别 :” + this.sex);
}
}
使用JSON语法创建数组
使用JSON语法创建数组也是非常常见的情形,在早期的JavaScript语法里,通过如下方式来创建数组:
//创建数组对象
var a = new Array();
//为数组元素赋值
a[0] = 'yeeku' ;
//维数组元素赋值
a[1] = 'nono' ;
或者通过如下方式创建数组:
//创建数组对象时直接赋值
var a = new Array('yeeku' , 'nono');
但如果我们使用JSON语法,则可以通过如下方式创建数组:
//使用JSON语法创建数组
var a = [ 'yeeku' , 'nono' ];
JSON创建数组总是以英文括号([)开始,然后依次放入数组元素,元素与元素之间以英文逗号(,)隔开,最后一个数组元素后面不需要英文逗号,但以英文反方括号(])结束。使用JSON创建数组的语法格式如下:
arr = [ value1 , value2, ......]
与JSON语法创建对象相似的是,数组的最后一个与元素后面不能有逗号(,)。
鉴于JSON语法的简单易用,而且作为数据传输载体时,数据传输量更小,因此在Ajax交互中,往往不适用XML作为数据交换格式,而是采用JSON作为数据交换格式。假设需要交换一个对象person,其name属性为yeeku,gender属性为male,age属性为29,使用JSON语法可以简化为如下形式:
person = {
name : ' yeeku ' ,
gender : ' male ' ,
age : 29
}
单如果使用XML数据交换格式,则需要采用如下格式:
<person>
<name>yeeku</name>
<gender>male</gender>
<age>20</age>
</person>
对比这两种表示方式,第一种方式明显比第二种方式更加简洁,数据传输量也更小。
Java的JSON支持
当服务器返回一个满足JSON格式的字符串后,可以利用JSON项目提供的工具类将该字符串转化为JSON对象或JSON数组。
Android系统内置了对JSON的支持,在Android SDK的org.json包下提供了JSONArray、JSONObject、JSONStringer和JSONException等类,通过这些类即可非常方便地完成JSON字符串与JSONArray、JSONObject之间的相互转换。
Java的JSON支持主要依赖于JSONArray和JSONObject两个类,其中:
1、JSONArray代表一个JSON数组,它可完成Java集合(集合元素可以是对象)与JSON字符串之间的相互转换。
2、JSONObject代表了一个JSON对象,它可完成JSON对象与JSON字符串之间的相互转换。
JSON简介的更多相关文章
- iOSXML & JSON 简介
XML & JSON 简介 •JSON –作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 –基于JavaScript的一个子集 –易读性略差,编码手写难度大,数据量小 ...
- json简介及JsonCpp用法
[时间:2017-04] [状态:Open] [关键词:数据交换格式,json,jsoncpp,c++,json解析,OpenSource] json简介 本文仅仅是添加我个人对json格式的理解,更 ...
- JSON 简介
ylbtech-JSON: JSON 简介 JSON:JavaScript Object Notation(JavaScript 对象表示法) JSON是存储和交换文本信息的语法,类似 XML. JS ...
- C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi
C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...
- js json简介(json的本质也是字符串)(用于服务器和客户端通信)
js json简介(json的本质也是字符串)(用于服务器和客户端通信) 一.总结 1.json的语法和js的语法非常像,只是json的键和值都是双引号,因为json的本质也是字符串 2.json是一 ...
- JSON简介以及用法汇总
什么是JSON? JavaScript 对象表示法(JavaScript Object Notation). JSON是一种轻量级的数据交换格式,某个JSON格式的文件内部譬如可以长成这样: { &q ...
- Json简介与转换数据例子
Json是什么,Json就是javascript对象或者数组格式的字符串,Http协议不能传递JavaScript对象,所以要转换为字符串进行传输.AJAX传递复杂数据如果自己进行格式定义的话会经历组 ...
- ASP.NET 将DataTable解析成JSON简介
这里解析json使用的是Newtonsoft.Json.dll程序集.下面请看code: using System; using System.Collections.Generic; using S ...
- JSON简介以及用法代码汇总
什么是JSON? JavaScript 对象表示法(JavaScript Object Notation). JSON是一种轻量级的数据交换格式,某个JSON格式的文件内部譬如可以长成这样: { &q ...
随机推荐
- webDriver 执行杀死浏览器进程方法
/** * 执行dos命令 * @param command */ public static void command(String command) { ...
- ubuntu gtk2.0 一个简单完整的窗口
//gtk_main();开了线程,关闭窗口并不能退出程序,需要手动添加 //gtk2.0,window quit compelete example #include <gtk/gtk.h&g ...
- js设计模式总结-策略模式
策略模式 要解决的问题 当解决一个问题有多种方法时,选择使用哪种方法时就少不了要用大量的if语句进行判断,如果将这些方法的实现和判断语句放在一起实现就会产生问题, 比如增加一种的新的方法时,就不得不再 ...
- Spring MVC静态资源处理
优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...
- jQuery.first() 函数
first() 函数详解 函数 获取当前对象的第一个元素 语法 $selector.first() 返回值 返回值为一个对象 实例说明 代码 <!DOCTYPE html><html ...
- Nodejs报错集
1.ReferenceError: userModule is not defined A:1>检查app.js文件中是否调用userModule所在的文件(const userModule=r ...
- servlet学习笔记_2
一.Servlet线程安全问题1.servlet的线程安全问题.servlet引擎采用多线程的模式运行,它为并发的每个访问请求都预备一个线程来相应,但是由于只有一个servlet对象,因此,如果多个线 ...
- svn使用
1 svn地址: svn://www.svn999.com/annie123.test12345 2 svn 账户: 账户使用时期:项目checkout时期 会提示键入用户名密码 3 新增文件 (1) ...
- Redis教程(二):String数据类型
一.概述: 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型 ...
- 利用Github Pages生成一个快速访问的网址,展示自己的项目
利用Github Pages展示自己的项目 写了个小项目,想要分享出去,一直在用Github管理项目,了解到Github还有Github Pages功能,然后惊喜的发现Github pages可以搭建 ...