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];
- JSON学习记录
- 学习Json记录
- 12、JSON 学习记录
- Java解析json学习记录
- FastXML Jackson / JSON 学习记录
- Android 学习记录-Json数据处理
- JSON工具学习记录--FastJSON
- java_web 学习记录(四):json
- JSON 记录
- json记录
- [学习记录]js处理json的list对象
- JSON工具学习记录--FastJSON循环引用问题
- JSON工具学习记录FastJSON循环引用问题
- Spring Security学习记录(三) -- JSON Web Token实践(上)
- Spring Security学习记录(四) -- JSON Web Token实践(下)
- Newtonsoft.Json 修改记录
- json 小小记录
- json解析记录
- android 应用内版本更新,带下载进度条
- viewpager + pagerAdapter刷新问题
- js生成GUID,可作为token使用
- Vue filters过滤器
- C/C++ 拼图游戏 代码简单 带有graphics图形库
- JSON学习记录
- 安装APK文件
- RocketMQ原理解析-consumer 6.pull消息消费
- 算法---比较排序算法
- JavaScript翻转字符串,把hello world. 变成 dlrow. olleh
- POJ-1724 ROADS
- NSInvocation 详解
- 一些需要解决的东西
- LinuxC学习日常——自习(1)