JSON初探

一、JSON身份揭秘

JSON:JavaScript 对象表示法(JavaScript Object Notation)。

轻量级的存储和交换信息的格式(语法)。

构建JSON的两种结构:

1、”键-值 对“(或者叫”名称-值 对“)形式

这种方式是无序的,"{}"包围,”:“进行值--对的分割,多个键值对使用”,“分割。

键值对

如在JavaScript中实现:

//在javascript中创建JSON对象

var JSONObject = {

            'name':'BeginMan',

            'age':'22',

            'address':'ZhengZhou',

            'profession':'Pythoner'

        };



//调用数据

document.write(JSONObject.name);    //"BeginMan"

document.write(JSONObject.age);      //"22"

document.write(JSONObject.address); //"ZhengZhou"

document.write(JSONObject.Pythoner);//"Pythoner"

 

2、以”值的有序列表“,即数组(array)的形式

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

JSON初探

 

//JSON 以数组的形式

var JsonArray = [{"name":"Zhangsan","age":18},{"name":"LiSi","age":20}];



//遍历输出

for(var i=0;i<JsonArray.length;i++){

    alert(JsonArray[i].name);    

    alert(JsonArray[i].age);

}



//或者索引输出

alert(JsonArray[0].name);



//同时可以进行修改

JsonArray[0].name = "ABC";

循环:

for(var obj in {"job":"No"}){

     alert(obj);    //只输出其 键,如'job'

}

 

注意:JSON 独立于语言。

JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。

JSON 值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

 

二、JSON与XML

可读性:JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。

可扩展性:XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,而JSON却不能。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。

编码、解码难度:XML编码容易解码难,而JSON恰相反。

读写速度:JSON要快一些

 

三、JSON的解析

JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

如Ajax等。

1、Javascript 的 eval()函数

由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

var person = '{"name":"BeginMan","age":22}';//Json字符串

var personObject = eval("("+person+")");    //解析为Json对象

alert(personObject);    //[object Object]

eval 函数非常快,但是它可以编译任何 javascirpt 代码,这样的话就可能产生安全的问题。eval 的使用是基于传入的代码参数是可靠的假设的,有一些情况下,可能客户端是不可信任的。

2、json.js

为了方便地处理JSON数据,JSON提供了json.js包,下载地址:http://www.json.org/json.js

也可在这查看:http://files.cnblogs.com/BeginMan/json.js

JSON.parse(JsonText,filter);  将 JavaScript 对象表示法 (JSON) 字符串转换为对象。可选的 filter 参数将遍历每一个value key 值对, 并进行相关的处理。parse:解析

//导入json.js

//JSON.parse(JsonText,filter);//可选的 filter 参数将遍历每一个value key 值对, 并进行相关的处理。

var pjson = JSON.parse(person,function(key,value){

    alert(key+value);//输出nameBeginMan,age22

})

JSON.stringify(value [, replacer] [, space])作用:将 JavaScript 对象转换为字符串,这个函数的作用主要是为了系列化对象的。

//数据接上面

var pobject = JSON.stringify(personObject);

alert(pobject);    //输出{"name":"BeginMan","age":22}

将两个JSON对象组装到一个里面

function addJson(J1,J2){

    if(J1&&J2){

        for(var i in J2){

            J1[i]=J2[i];

        }

    }

}

var json1 = {"name":"BeginMan"};

var json2 = {"age":22};

addJson(json1,json2);//由于并没有返回结果,所以只是进行功能上的操作

alert(JSON.stringify(json1));    //输出{"name":"BeginMan","age":22}

 

 参考:

http://www.json.org/json-zh.html

http://www.cnblogs.com/xiaoyaoyou3/archive/2013/04/12/3015903.html

http://blog.csdn.net/sanpintian/article/details/7347711

 

你可能感兴趣的:(json)