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. Excel 2007 批量删除隐藏的文本框

    该方法取自百度知道,该朋友给出函数,我详细写一下方法. 打开有文本框的excel文件. 按 Alt+F11 打开编辑器. 将下面的函数复制进去: Sub deltxbox()Dim s As Shap ...

  2. MySQL新建用户,授权,删除用户,修改密码

    首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的.注:本操作是在WIN命令提示符下,phpMyAdmin同样适用.    用户:phplamp  用户数据库: ...

  3. 前端 JS POST提交

    /*点击事件*/ function deleteExportItemAndEportUser(id) {    post("deleteExportItemAndEportUser" ...

  4. node.js + expres 的安装

    一 windows下安装 首先去官网下载msi安装包. 两篇很有参考价值的文章: http://cnodejs.org/topic/4fae80c02e8fb5bc650a8360 http://bl ...

  5. React之JSX

    0.对于学习React,我们先来熟悉下JSX的语法, 下面的这些语法仅用于构建一个组件的标签模块,定义完成之后如果需要做演示,请附加以下代码: ReactDOM.render( element1, d ...

  6. 学习 ---- JavaScript 高级设计程序 第三章(数据类型)

                                    3.4 数据类型 基本数据类型:Undefined.Null.Boolean.Number.String 复杂数据类型:Object 3 ...

  7. 求助sublime snippet

    单个文件多个snippets不能生效?求助!(已解决) 文件保存路径:F:\work\sublime\Data\Packages\User\completions\xp.sublime-complet ...

  8. 关于HTML5你必须知道的28个新特性,新技巧以及新技术

    1. 新的Doctype 尽管使用<!DOCTYPE html>,即使浏览器不懂这句话也会按照标准模式去渲染 2. Figure元素 用<figure>和<figcapt ...

  9. freeMarker生成静态页面

    项目结构图 footer.ftl des==>${f.des}<br/> <a href="http://www.baidu.com"> 百度 < ...

  10. mysql忘记密码

    修改 /etc/my.cnf 添加 skip-grant-tables 修改完后重启mysql 这样就可以直接进入mysql 然后修改mysql数据库密码 mysql>update user s ...