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简介的更多相关文章

  1. iOSXML & JSON 简介

    XML & JSON 简介 •JSON –作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 –基于JavaScript的一个子集 –易读性略差,编码手写难度大,数据量小 ...

  2. json简介及JsonCpp用法

    [时间:2017-04] [状态:Open] [关键词:数据交换格式,json,jsoncpp,c++,json解析,OpenSource] json简介 本文仅仅是添加我个人对json格式的理解,更 ...

  3. JSON 简介

    ylbtech-JSON: JSON 简介 JSON:JavaScript Object Notation(JavaScript 对象表示法) JSON是存储和交换文本信息的语法,类似 XML. JS ...

  4. C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi

    C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...

  5. js json简介(json的本质也是字符串)(用于服务器和客户端通信)

    js json简介(json的本质也是字符串)(用于服务器和客户端通信) 一.总结 1.json的语法和js的语法非常像,只是json的键和值都是双引号,因为json的本质也是字符串 2.json是一 ...

  6. JSON简介以及用法汇总

    什么是JSON? JavaScript 对象表示法(JavaScript Object Notation). JSON是一种轻量级的数据交换格式,某个JSON格式的文件内部譬如可以长成这样: { &q ...

  7. Json简介与转换数据例子

    Json是什么,Json就是javascript对象或者数组格式的字符串,Http协议不能传递JavaScript对象,所以要转换为字符串进行传输.AJAX传递复杂数据如果自己进行格式定义的话会经历组 ...

  8. ASP.NET 将DataTable解析成JSON简介

    这里解析json使用的是Newtonsoft.Json.dll程序集.下面请看code: using System; using System.Collections.Generic; using S ...

  9. JSON简介以及用法代码汇总

    什么是JSON? JavaScript 对象表示法(JavaScript Object Notation). JSON是一种轻量级的数据交换格式,某个JSON格式的文件内部譬如可以长成这样: { &q ...

随机推荐

  1. django系列--第一节

    学习前准备 安装必须的学习环境环境(学习前提:python2.7) pip install django==1.8 pip install mysqldb(后面会用) pip install Pill ...

  2. CSS与JavaScript的一些问题汇总

    通过最近的学习,总结了一些问题,可能总结得不够完善,但是好记性不如烂笔头,先记在这儿,后面看到更完整的回答,再进行修改. 1.事件流,如何阻止冒泡事件流:在点击一个按钮时,实则,按的父容器与按钮的父容 ...

  3. T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)

    -- 查找所有父节点with tab as( select Type_Id,ParentId,Type_Name from Sys_ParamType_V2_0 where Type_Id=316-- ...

  4. Redis学习-基础环境介绍(二)

    1.通过VMware安装了Centos6.8系统 2.Reids安装过程,需要GCC环境 »通过下面命令,根据提示直接安装 1 yum install gcc 3.Redis选用的是3.2.4(建议使 ...

  5. iOS - Safe iOS 加密安全

    1.Base64 编码 简介: Base64 是一种基于64个可打印字符来表示二进制数据的表示方法,可打印字符包括字母 A-Z.a-z.0-9,共 62 个字符,另外两个符号在不同的系统不同 +,/. ...

  6. iOS UIWebView重定向Cookie

    // 1. 取出当前的cookies NSArray<NSHTTPCookie *> *cookies = [NSHTTPCookieStorage sharedHTTPCookieSto ...

  7. input type="number"

    情景: 移动端 input控件,调数字键盘,在输入小数点时光标会自动跳到小数点前面.安卓6.0.1的版本会这样. question: 1.调原生数字键盘的方法,必须用 type="numbe ...

  8. hdu 5676 ztr loves lucky numbers

    题目链接:hdu 5676 一开始看题还以为和数位dp相关的,后来才发现是搜索题,我手算了下,所有的super lucky number(也就是只含数字4, 7且4, 7的数量相等的数)加起来也不过几 ...

  9. oracle数据库函数之============‘’分析函数和聚合函数‘’

    1分析函数 分析函数根据一组行来进行聚合计算,用于计算完成狙击的累积排名等,分析函数为每组记录返回多个行 rank_number() 查询结果按照次序排列,不存在并列和站位的情况,可以用于做Oracl ...

  10. OpenGL利用模板测试实现不规则裁剪

    本文是原创文章,如需转载,请注明文章出处 在游戏开发中,经常会有这样的需求:给定一张64x64的卡牌素材,要求只显示以图片中心为圆点.直径为64的圆形区域,这就要用到模板测试来进行不规则裁剪. 实现不 ...