JSON学习记录

来源:互联网 发布:下载cctalk软件 编辑:程序博客网 时间:2024/06/05 18:45

什么是JSON:

JSON(JavaScript Object Notation)是一种由道格拉斯·克罗克福特构想设计、轻量级的数据交换语言,以文本为基础,且易于让人阅读。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。
JSON 数据格式与语言无关,脱胎于 JavaScript,但目前很多编程语言都支持 JSON 格式数据的生成和解析。JSON 的官方 MIME 类型是 application/json,文件扩展名是 .json。


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

JSON与XML的比较:

相同点:

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

不同点:

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

JSON语法

JSON 语法是 JavaScript 对象表示法语法的子集。

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

    “name” : “lgh”

    JSON 值可以是:

    • 数字(整数或浮点数) { "age":24 }
    • 字符串(在双引号中) "name":"lgh"
    • 逻辑值(true 或 false)”isMale”:true
    • 数组(在中括号中)

      {"persons": [{    "name": "lgh",    "age": 24},{    "name": "xiya",    "age": 20},{    "name": "yoko",    "age": 30}]}
    • 对象(在大括号中) { "name":"lgh" , "age":24 }

    • null "email":null
  • 数据由逗号分隔

  • 大括号保存对象
  • 中括号保存数组

JSON中的两个最重要的数据结构:对象与数组。

JSON对象

{ “name”:”lgh”, “age”:24, “sex”:”male” }

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

访问对象值

  • 你可以使用点号(.)来访问对象的值:
var json = { "name":"lgh", "age":24, "sex":"male" };            alert(json.name);
  • 你也可以使用中括号([])来访问对象的值:
var json = { "name":"lgh", "age":24, "sex":"male" };            alert(json["name"]);

循环对象

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

var json = { "name":"lgh", "age":24, "sex":"male" };            for (var x in json) {                alert(x);            }

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

var json = { "name":"lgh", "age":24, "sex":"male" };            for (var x in json) {                alert(json[x]);            }

此处就不可以使用json.x了。


嵌套 JSON 对象

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

var json = {                "name":"lgh",                "age":24,                "sex":"male",                "favorite":{"f1":"足球", "f2":"篮球"}            };            alert(json.favorite.f1);            alert(json["favorite"]["f2"]);

修改值

你可以使用点号(.)或者使用中括号([])来修改 JSON 对象的值:

var json = {                "name":"lgh",                "age":24,                "sex":"male",                "favorite":{"f1":"足球", "f2":"篮球"}            };            json.favorite.f1 = "排球";            alert(json["favorite"]["f1"]);

删除对象属性

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

var json = {                "name":"lgh",                "age":24,                "sex":"male",                "favorite":{"f1":"足球", "f2":"篮球"}            };            alert(json.favorite.f1);            delete json.favorite.f1;            alert(json["favorite"]["f1"]);

JSON数组

数组作为 JSON 对象

[ “Google”, “Baidu”, “Taobao” ]

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

JSON 对象中的数组

var json = {                "name":"lgh",                "age":24,                "sex":"male",                "favorite":["足球", "篮球", "排球"]            };            alert(json.favorite[0]);            alert(json.favorite[1]);            alert(json.favorite[2]);

循环数组

你可以使用 for-in 来访问数组:

var json = {                "name":"lgh",                "age":24,                "sex":"male",                "favorite":["足球", "篮球", "排球"]            };            var content = "";            for (var x in json["favorite"]) {                content += json.favorite[x] + ":";            }            alert(content);

你也可以使用 for 循环:

var json = {                "name":"lgh",                "age":24,                "sex":"male",                "favorite":["足球", "篮球", "排球"]            };            var content = "";            for (var i = 0; i < json.favorite.length; i++) {                content += json.favorite[i] + ":";            }            alert(content);

嵌套 JSON 对象中的数组

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

<!DOCTYPE html><html><head>    <meta charset="utf-8">    <title>学习</title>    <script src="static/js/jquery-1.12.4.min.js"></script>    <script>        $(function () {            var json = {                "name":"网站",                "num":3,                "sites": [                    { "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ] },                    { "name":"Taobao", "info":[ "淘宝", "网购" ] }                ]            };            var content = "";            for (var i in json.sites) {                content += "<h1>" + json.sites[i].name + "</h1>";                for (var j in json.sites[i].info) {                    content += json.sites[i].info[j] + "<br>";                }            }            $("#content").html(content);        });    </script></head><body><span id="content"></span></body></html>

修改数组值

你可以使用索引值来修改数组值:

json.favorite[0] = “乒乓球”;

删除数组元素

我们可以使用 delete 关键字来删除数组元素:

delete json.favorite[0];

原创粉丝点击