AJAX——JSON数据格式

JSON数据格式,前段时间一直听他们合作的说,但是不知道是什么,这次终于明白了,其实就是一种类似于XML的数据传输格式。下边我从定义,语法,转换为JavaScript对象以及与XML的比较四个方面介绍一下。


一,先看一下定义吧,这是百度百科中的:

JSON(JavaScriptObject Notation) 是一种轻量级的数据交换格式。它基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成


二,看一下它的语法使用规则:

首先我们来看一个例子吧,通过这个例子来学习它的各种语法规则吧:

<html>
<body>
<h2>通过 JSON 字符串来创建对象</h3>
<p>First Name: <span id="fname"></span></p> 
<p>First Name: <span id="fname2"></span></p> 

<script type="text/javascript">
//定义为employees为JSON数据格式的,里边包含了三个对象
var employees = [
{ "firstName":"Bill","lastName":"Gates" },{ "firstName":"George","lastName":"Bush" },{ "firstName":"Thomas","lastName": "Carter" }
];
employees[1].firstName="刘佳翰";
document.getElementById("fname").innerHTML=employees[0].firstName;
document.getElementById("fname2").innerHTML=employees[1].firstName;
</script>

</body>
</html>

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

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值;例如上边的:"firstName":"Bill"

语法二:JSON 值可以是:

数字(整数或浮点数)

字符串(在双引号中)

逻辑值(true或 false)

数组(在方括号中)

对象(在花括号中)

null

语法三:JSON对象:

JSON 对象在花括号中书写

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

语法四:JSON数组:

JSON 数组在方括号中书写

数组可包含多个对象


三,如何将JSON数据格式转换为JavaScript对象呢,我们可以利用内置函数eval().这点在例子中看:


<script type="text/javascript">
         //定义json数据格式json1和json2
    var json1 = "{'employees':[" +
    "{'firstName':'Bill','lastName':'Gates' }," +
    "{'firstName':'George','lastName':'Bush' }," +
    "{'firstName':'Thomas','lastName':'Carter' }]}";

    var json2 = "[1,2,{a:123,b:'String',c:[100,1001]}]";

    //这里为什么用("(" + json1 +")"),eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,
    //在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

    var obj = eval("(" + json1 +")");
    var jsonArray = eval(json2);
    document.getElementById("fname").innerHTML = obj.employees[1].firstName
    document.getElementById("lname").innerHTML = obj.employees[1].lastName
    alert(jsonArray[1]);
</script>

当然这是我们方便学习在前台写的JSON数据格式,直接调用的,而在实际应用中,我们更多是将后台传输的格式写成JSON的,然后传到前台,再进行各种处理使用。

四,JSON数据格式和XML的比较:

先看一下两个例子吧:

XML表示如下:

<?xml version="1.0" encoding="utf-8"?>
<country>
<name>中国</name>
<province>
<name>黑龙江</name>
<cities>
<city>哈尔滨</city>
<city>大庆</city>
</cities>
</province>
<province>
<name>广东</name>
<cities>
<city>广州</city>
<city>深圳</city>
<city>珠海</city>
</cities>
</province>
<province>
<name>台湾</name>
<cities>
<city>台北</city>
<city>高雄</city>
</cities>
</province>
<province>
<name>新疆</name>
<cities>
<city>乌鲁木齐</city>
</cities>
</province>
</country>

JSON表示如下:

{
"name":"中国","province":[
{
"name":"黑龙江","cities":{
"city":["哈尔滨","大庆"]
}
},{
"name":"广东","cities":{
"city":["广州","深圳","珠海"]
}
},{
"name":"台湾","cities":{
"city":["台北","高雄"]
}
},{
"name":"新疆","cities":{
"city":["乌鲁木齐"]
}
}
]
}

两者相同之处:

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

两者不同之处:

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

AJAX传输异步数据为什么使用JSON呢?

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

使用 XML

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

JSON

  • JSON字符串
  • eval()处理字符串

这样就能看出我们利用JSON传输数据的快捷了。


综上为JSON的基础学习,虽然知识点不大,但是还是非常重要的知识,学习好JSON,可以更方便更快捷的为我们的AJAX传输异步数据进行。AJAX的学习中……

相关文章

JS原生Ajax操作(XMLHttpRequest) GET请求 POST请求 兼容性问题 利用iframe模拟ajax 实现表单提交的返回...
AJAX 每日更新前端基础,如果觉得不错,点个star吧 &#128515; https://github.com/WindrunnerMax/E...
踩坑Axios提交form表单几种格式 前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSe...
很早就听闻ajax的名声,但是却一直不知道怎么用,今天自己捣鼓了一下,竟然会用了,哈哈哈哈。 为了防止...
需要在服务器上进行哈 jquery的ajax方法: // jquery请求 $.ajax({ url: &quot;./server/slider.js...
Ajax函数封装ajax.js // Get / Post // 参数 get post // 是否异步 // 如何处理响应数据 // URL // var...