简单论述JSON

JSON是什么

JSON是JavaScript Object Notation(JavaScript 对象表示法)的简称。

JSON 是存储和交换文本信息的语法。类似XML

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

JSON 独立于语言:

JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。

JSON - 转换为 JavaScript 对象

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

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

XML用于传输和存储数据。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 对象表示语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 大括号保存对象
  • 中括号保存数组
  • eg:var JSONObject= {
  • "name":"菜鸟教程",
  • "url":"www.runoob.com",
  • "slogan":"学的不仅是技术,更是梦想!"
  • };

JSON 名称/值对:"name" : "菜鸟教程"

值可以是:

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

JSON 对象

JSON 对象在大括号({})中书写:

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

{ "name":"菜鸟教程" , "url":"www.runoob.com" }

这一点也容易理解,与这条 JavaScript 语句等价:

name = "菜鸟教程" url = "www.runoob.com"

访问对象值:

你可以使用点号(.)来访问对象的值:

var myObj, x;

myObj = { "name":"runoob", "alexa":10000, "site":null };

x = myObj.name;

你也可以使用中括号([])来访问对象的值:

var myObj, x;

myObj = { "name":"runoob", "alexa":10000, "site":null };

x = myObj["name"];

循环对象:

你可以使用for-in来循环对象的属性:

var myObj = { "name":"runoob", "alexa":10000, "site":null };

for (x in myObj) {

document.getElementById("demo").innerHTML += x + "<br>";

}

在 for-in 循环对象的属性时,使用中括号([])来访问属性的值:

var myObj = { "name":"runoob", "alexa":10000, "site":null };

for (x in myObj) {

document.getElementById("demo").innerHTML += myObj[x] + "<br>";

}

嵌套JSON对象:

JSON对象中可以包含另一个JSON对象:

myObj = { "name":"runoob",

"alexa":10000,

"sites": {

"site1":"www.runoob.com",

"site2":"m.runoob.com",

"site3":"c.runoob.com"

} }

可以使用点号(.)或者中括号([])来访问嵌套的 JSON 对象。

x = myObj.sites.site1; // 或者 x = myObj.sites["site1"];

同时也可以使用点号(.)或者中括号([])来修改JSON 对象的值。

myObj.sites["site1"] = "www.google.com";或者myObj.sites.site1 = "www.google.com";

我们还可以使用delete关键字来删除JSON对象的属性:

delete myObj.sites.site1;或者delete myObj.sites["site1"]

JSON 数组

JSON 数组在中括号中书写。

JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

JSON 数组在中括号中书写:

{

"sites": [

{ "name":"菜鸟教程" , "url":"www.runoob.com" },

{ "name":"google" , "url":"www.google.com" },

{ "name":"微博" , "url":"www.weibo.com" }

] }

我们使用索引值来访问数组:

sites[i].name;

循环数组:

用for-in来访问数组:

<script>

var myObj, i, x = "";
myObj = {
    "name":"网站",
    "num":3,
    "sites":[ "Google", "Runoob", "Taobao" ]
};

for (i in myObj.sites) {
    x += myObj.sites[i] + "<br>";
}

document.getElementById("demo").innerHTML = x;

</script>

可以使用for来循环:

<script>

var myObj, i, x = "";
myObj = {
    "name":"网站",
    "num":3,
    "sites":[ "Google", "Runoob", "Taobao" ]
};

for (i = 0; i < myObj.sites.length; i++) {
    x += myObj.sites[i] + "<br>";
}

document.getElementById("demo").innerHTML = x;

</script>

嵌套JSON对象中的数组:

JSON对象中数组可以包含另外一个数组,或者另外一个JSON对象

myObj = {

"name":"网站", "num":3,

"sites": [

{ "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ] },

{ "name":"Runoob", "info":[ "菜鸟教程", "菜鸟工具", "菜鸟微信" ] },

{ "name":"Taobao", "info":[ "淘宝", "网购" ] }

] }

使用for-in来循环每个数组:

for (i in myObj.sites) {

x += "<h1>" + myObj.sites[i].name + "</h1>";

for (j in myObj.sites[i].info) {

x += myObj.sites[i].info[j] + "<br>";

} }

修改数组值:

使用索引值来修改myObj.sites[1] = "Github";

删除数组元素:

使用delete来删除delete myObj.sites[1];

猜你喜欢

转载自blog.csdn.net/mumu1998/article/details/82895014