初步认识JSON

1 、首先还是要说一下json是啥,有啥用
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
JSON 是存储和交换文本信息的语法
为什么使用 JSON?
对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:
使用 XML

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

使用 JSON

  • 读取 JSON 字符串

  • 用 eval() 处理 JSON 字符串

2**、然后老规矩上段基础代码先看看模样加深一下认识**

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>百度一下</title>
</head>
<body>
<h2>JavaScript 创建 JSON 对象</h2>
<p>
网站名称: <span id="jname"></span><br /> 
网站地址: <span id="jurl"></span><br /> 
网站 slogan: <span id="jslogan"></span><br /> 
</p>
<script>
var JSONObject= {
    "name":"百度",
    "url":"www.baidu.com", 
    "slogan":"百度,人类进步的绊脚石!"
};
document.getElementById("jname").innerHTML=JSONObject.name 
document.getElementById("jurl").innerHTML=JSONObject.url 
document.getElementById("jslogan").innerHTML=JSONObject.slogan
</script>
 
</body>
</html>

JSON理解起来比ajax要简单些,毕竟说白了他主要的功能就是储存和交换信息,所以把学习json的重点放在如何储存和信息转换上,是重点也是难点。
接下来慢慢剖析一波JSON

3、JSON语法

  • 语法规则:

①数据在名称/值对中②数据由逗号分隔③大括号保存对象④中括号保存数组
JSON 数据的书写格式是:名称/值对。

"name" : "百度"

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

  • JSON 值

①数字(整数或浮点数){ "age":30 }
②字符串(在双引号中)
③逻辑值(true 或 false){ "flag":true }
④数组(在中括号中)

{
"sites": [
{ "name":"百度" , "url":"www.baidu.com" }, 
{ "name":"google" , "url":"www.google.com" }, 
{ "name":"微博" , "url":"www.weibo.com" }
]
}

⑤对象(在大括号中){ "name":"百度" , "url":"www.baidu.com" }
⑥null

{ "runoob":null }

4、JSON对象:
JSON 对象使用在大括号({})中书写。
对象可以包含多个 key/value(键/值)对
key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
key 和 value 中使用冒号(:)分割。
每个 key/value 对使用逗号(,)分割。

  • 访问对象值

    <head>
     <meta charset="utf-8">
     <title>菜鸟教程(runoob.com)</title>
     </head>
     <body>
     
     <p>你可以使用点号(.)来访问 JSON 对象的值:</p>
     
     <p id="demo"></p>
     
     <script>
     
     var myObj, x;
     myObj = { "name":"runoob", "alexa":10000, "site":null };
     x = myObj.name;
     document.getElementById("demo").innerHTML = x;
     
     </script>
     
     </body>
     </html>
    

首先看这段代码,定义一个json对象,然后注意,这时候就可以调用对象里的值了,调用的方法就是使用点号(.),代码段中:x = myObj.name
这里就成功调用了name的值“runoob”

  • 嵌套 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";

可以使用点号(.)来修改 JSON 对象的值:

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

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

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

5、JSON 数组

  • 数组作为 JSON 对象

[ “Google”, “Runoob”, “Taobao” ]

JSON 数组在中括号中书写。
JSON 中数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。
JavaScript 中,数组值可以是以上的 JSON 数据类型,也可以是 JavaScript 的表达式,包括函数,日期,及 undefined。

  • JSON 对象中的数组

对象属性的值可以是一个数组:

{
"name":"网站",
"num":3,
"sites":[ "Google", "Runoob", "Taobao" ]
}

可以使用索引值来访问数组:x = myObj.sites[0];

  • 嵌套 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];

6、JSON.parse()
JSON.parse方法用于将JSON字符串转化成对象
在接收服务器数据时一般是字符串。
我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。
先整段代码看看这个方法的用法:

var jsonStr = '[{"城市":"北京","面积":16800,"人口":1600},
                {"城市":"上海","面积":6400,"人口":1800}]';
var jsonObj = JSON.parse(jsonStr);
console.log(jsonObj);

运行结果为(主要区别):

[{"城市":"北京","面积":16800,"人口":1600}, {"城市":"上海","面积":6400,"人口":1800}]

7、JSON.stringify()

JSON.stringify方法用于将一个值转为字符串
在向服务器发送数据时一般是字符串。
我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。
整段代码看看用法,其实和JSON.parse()反着

var jsonObj = [
    {"城市":"北京","面积":16800,"人口":1600},
    {"城市":"上海","面积":6400,"人口":1800}
];
console.log(JSON.stringify(jsonObj));

运行结果为:

'[{"城市":"北京","面积":16800,"人口":1600},  {"城市":"上海","面积":6400,"人口":1800}]'

其他的json实例后续进行讲解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章