JSON 是储存和交换文本信息的语法. 客户端 读取服务器上的 json数据到本地. 本地 把json 转为 js对象再使用.

JSON 语法规则

  • 数据在 名称/值对中
  • 数据由 逗号分割
  • 花括号 保存对象
  • 方括号 保存数组

json 名称/值对

"名称":"值"

名称 在双引号中 后面根一个冒号 然后是值

json 值

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

json 对象

对象写在 花括号中…. { “name”:”菜鸟教程” , “url”:”www.runoob.com” }

等于下面的 js

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

json 数组

数组 写在方括号中 数组可以包含多个对象 { “sites”: [ { “name”:”菜鸟教程” , “url”:”www.runoob.com” }, { “name”:”google” , “url”:”www.google.com” }, { “name”:”微博” , “url”:”www.weibo.com” } ] }

实例

var sites = [
{ "name":"runoob" , "url":"www.runoob.com" }, 
{ "name":"google" , "url":"www.google.com" }, 
{ "name":"微博" , "url":"www.weibo.com" }
];

JSON: JavaScript Obiect Notation

JSON 取代 xml 给网络传输带来了很大的便利. 但是缺乏了xml的一目了然. 尤其是 json 数据ƒ很长的时候. 会陷入繁琐的数据节点查找中

http://www.json.org/json-zh.html

轻量级的数据交换格式. 易于 阅读和编写.

采用完全独立于语言的文本格式.,

JSON 是理想的数据交换语言.

JS 构建于两种结构.

对象: 一个无序的名称/值 对 集合.

对象: {} 名称: : 多个对 , 分割..

JSON: JavaScript Object Notation 轻量级的 数据交换格式.
易于阅读和书写. 易于机器解析和生成.非常简单,很快风靡web界. 成为ECMA标准. 几乎所有语言都有解析json 的库. js内置 json解析. 可以直接使用.

  • JSON 是存储和交换文本信息的语法。类似 XML。
  • JSON 比 XML 更小、更快,更易解析

在json之前 只能用 xml来传递数据(功能类似数据库:用文本格式来储存数据.) xml 本身不算复杂,但是加上一大堆 xpath. dtd 等等的规范之后.会非常头疼.即使努力研究几个月也未必搞得清楚. 建议xml直接pass

在json中 一共就那么几种数据类型. 和js 几乎完全一致

json 定死了 字符集 必须是iUTF-8. 所有中文是支持的. 为了统一解析: JSON 字符串必须用 "" Object 的键 也必须用 ""

结构: 多个数组 组成. 每个数组都有 名称/值.

JSON 使用的是 js 语法. 所以在js中 使用json 非常简单:

创建JSON 数组

var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];

序列化

把任何js对象变成JSON. 也就是把这个对象 序列化成一个JSON格式的字符串. 这样才能通过网络传递给其他计算机.

我们收到一个json格式的字符串. 只要把它反序列化成一个 js对象.就可以在js中直接使用这个对象了.

var xiaoming = {
name: '小明',
age: 14,
gender: true,
height: 1.65,
grade: null,
'middle-school': '\"W3C\" Middle School',
skills: ['JavaScript', 'Java', 'Python', 'Lisp']
};

console.log(JSON.stringify(xiaoming));

就会在 浏览器 console 中 显示:

JSON.stringify(xiaoming); // '{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}'

反序列化

拿到一个 json格式的字符串. 用 JSON.parse() 把它变成一个 js对象.

JSON.parse('[1,2,3,true]'); // [1, 2, 3, true]
JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14}
JSON.parse('true'); // true
JSON.parse('123.45'); // 123.45