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. hive的使用03

    1.hive中的四种排序 1.1 order by :对全局进行排序,只能有一个reduce select * from hive.employee order by id;

  2. 一文说尽C++赋值运算符重载函数(operator=)

    写在前面: 关于C++的赋值运算符重载函数(operator=),网络以及各种教材上都有很多介绍,但可惜的是,内容大多雷同且不全面.面对这一局面,在下在整合各种资源及融入个人理解的基础上,整理出一篇较 ...

  3. SLES 10安装Oracle10gR2笔记

    SLES 10安装Oracle10gR2笔记 一. 数据库安装 . 安装C/C++ Compiler gcc --version验证是否安装 . 验证Service Pack版本 SPident –v ...

  4. Mac下遇到 'reading initial communication packet’ 问题

    今天在开发过程中,一个单位跑的好好的项目,在家中的Mac下运行时,遇到了下面这个错误:   "Lost connection to MySQL server at 'reading init ...

  5. Write a script to check an interesting game 6174

    # -*- coding: utf-8 -*-#from ftplib import FTPimport osdef sort_reverse(x,y): if x>y: return -1 i ...

  6. php : 基础(4)

    流程控制 循环结构 循环的中断 循环中,有两种中断语句可以使用: break: 用于完全终止某个循环,让执行流程进入到循环语句后面的语句: continue: 用于停止当前正在进行的当次循环,而进入到 ...

  7. Solr Cloud - SolrCloud

    关于 Solr Cloud Zookeeper 入门,介绍 原理 原封不动转自 http://wiki.apache.org/solr/SolrCloud/ ,文章的内存有些过时,但是了解原理. Th ...

  8. 在myeclipse2014使用git上传github

    简介 首先在myeclipse中安装github客户端插件,这里就不说了,跟安装svn客户端插件一样的步骤 1.选中要push到github的工程右键team->share project-&g ...

  9. [sqoop1.99.7] sqoop入门-下载、安装、运行和常用命令

    一.简介 Apache Sqoop is a tool designed for efficiently transferring data betweeen structured, semi-str ...

  10. Linux下漏洞提权

    Linux下的漏洞提权 linux下一般都是系统漏洞提权,分为以下几个步骤: