Json的使用

来源:互联网 发布:java物流项目简历 编辑:程序博客网 时间:2024/05/22 06:59

一、什么是JSON

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

JSON是轻量级的文本数据交换格式。

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

JSON具有自我描述性,更易理解。

JSON比XML更小、更快、更易解析。



二、JSON转换为javascript对象

JSON文本格式在语法上与创建的javascript对象的代码相同。

由于这种特性,无需解析器,javascript程序能够使用内建的eval()函数,,用JSON来生成原升javascript对象。


  • eval()函数:可计算某个字符串,并执行其中的javascript代码


三、JSON特点

类似XML

  • JSON是纯文本
  • JSON具有自我描述性(人类可读)
  • JSON具有层级结构(值中存在值)
  • JSON可通过javascript进行解析
  • JSON数据可使用AJAX进行传输


相比XML的不同之处

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 能够使用内建的javascript eval()方法进行解析
  • 使用数组
  • 不使用保留字


四、为什么使用JSON

对于使用AJAX应用程序来说,JSON比XML更快更易使用:

使用XML

  • 读取XML文档
  • 使用XML DOM来循环遍历文档
  • 读取值并存储在变量中

使用JSON

  • 读取JSON字符串
  • 用eval()处理JSON字符串


五、JSON语法

JSON语法是javascript语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组


JSON名称/值对

JSON数据的书写格式是:名称/值对。

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

"firstName" : "John"


JSON值

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

JSON对象

JSON对象在花括号中书写:

对象可以包含多个名称/值对:

{ "firstName":"John" , "lastName":"Doe" }

JSON对象的两个方法:stringify()和parse()。这两个方法分别用于把javascript对象序列化为JSON字符串和把JSON字符串解析为原生javascript值。

  • stringify()

 var book = {            title:"Professional",            authors:["Nicholas C. Zakas"],            edition:3,            year:2011        };        var jsonText = JSON.stringify(book);

这个例子使用JSON.stringify()把一个javascript对象序列化为一个JSON字符串,然后将它保存在变量jsonText中。默认情况下,JSON.stringify()输出的JSON字符串不包含任何空格字符或缩进,因此保存在jsonText中的字符串为:

{"title":"Professional","authors":["Nicholas C. Zakas"],"edition":3,"year":2011}
在序列化javascript对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。此外,值为undefined的任何属性也都会被跳过。结果中最终都是值为有效JSON数据类型的实例属性。

  • prase()

将JSON字符串直接传递给JSON.prase()就可以得到相应的javascript值。例如,使用下列代码就可以创建与book类似的对象
var bookCopy = JSON.parse(jsonText);
如果传给JSON.prase()的字符串不是有效的JSON,该方法会抛出错误

JSON数组

JSON数组在方括号中书写

数组可以包含多个对象:

{"employees": [{ "firstName":"John" , "lastName":"Doe" },{ "firstName":"Anna" , "lastName":"Smith" },{ "firstName":"Peter" , "lastName":"Jones" }]}

在上面的代码中,对象"employees"是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录


JSON使用javascript语法

因为JSON使用javascript语法,所以无需额外的软件就能处理javascript中的JSON

例子

var employees = [{ "firstName":"Bill" , "lastName":"Gates" },{ "firstName":"George" , "lastName":"Bush" },{ "firstName":"Thomas" , "lastName": "Carter" }];
可以像这样访问javascript对象数组中的第一项

employees[0].lastName;

JSON文件

  • JSON文件的类型是“.json”
  • JSON文本的MIME类型是“application/json”


六、JSON使用

把JSON文本转换为javascript对象

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


for in遍历JSON

获取对象属性的语法:

  1. 1.obj.attr
  2. 2.obj["attr"]

for in遍历JSON的时候

  1. 1.for(attr  in JSON)中的attr是获取到的JSON中属性的名字,是个字符串
  2. 2.json[attr]获取到的是属性的值,该属性的值的数据类型,与JSON中该属性的值的数据类型一致。

var json = {            "lrc1":{"time": "00:53.68", "lrc": "一起醉一回"},            "lrc2":{"time": "00:56.68", "lrc": "男人为什么不回家"},            "lrc3":{"time": "00:58.86","lrc": "只因家里那个她"},            "lrc4":{"time": "01:01.19", "lrc": "独自一人闯天涯"},            "lrc5":{"time": "01:03.33", "lrc": "天不怕地不怕"},            "lrc6":{"time": "01:05.65","lrc": "男人他一肩挑霜华"},            "lrc7":{"time": "01:07.84", "lrc": "只因压力如山大"},            "lrc8":{"time": "01:10.22", "lrc": "你负责贤惠美如花"},            "lrc9":{"time": "01:12.38","lrc": "我就负责赚钱养家"}        }
 for(attr in json){            var obj = json1[attr];            document.write(obj.time + "  " + obj.lrc + "<br>")        }













































0 0
原创粉丝点击