大话Json

4 篇文章 0 订阅

大话Json之全面详解Json —————-学习语言就是这么简单
对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用。棒棒的!!!

简介

1.Json(JavaScript Object Notation) 是一种轻量级的数据交换格式。

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

3.Json 比 XML 更小、更快,更易解析。

易于人阅读和编写。同时也易于机器解析和生成。

JSON 与 XML

1.JSON的优势:

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

2.使用 XML

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

3.使用 Json

  • 读取 JSON 字符串
  • 用 eval() 处理 Json 字符串

JSON 语法规则

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

  1. 数据在名称/值对中
  2. 数据由逗号分隔
  3. 花括号保存对象
  4. 方括号保存数组
JSON 几种数据类型

number:数字(整数或浮点数),和JavaScript的number完全一致;

boolean:逻辑值(true 或 false),就是JavaScript的true或false;

string:字符串(在双引号中),就是JavaScript的string;

null:null,就是JavaScript的null;

array:数组(在方括号中),就是JavaScript的Array表示方式——[];

object:对象(在花括号中),就是JavaScript的{ … }表示方式。

JSON 对象

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

{ //"{"开始
  'name' : 'yan', // 每个名称后跟着一个":"
  'age' : 18, // 每对"名称:值"之间用","分隔
  'sex' : 'male'
} // 以"}"结尾 

细节:
以”{“开始,以”}”结尾
每个名称后跟着一个”:”
每对”名称:值”之间用”,”分隔

JSON 数组

数组可包含多个对象:

{
  // familys为一维数组,数组里包含两笔对象数据
  'familys' = [ // 以"["开始
  {'name' : 'yan',
  'age' : 18,
  'sex' : 'male'}, // 值之间使用","
  {'name' : 'wen',
  'age' : 16,
  'sex' : 'famale'}
  ] // 以"]"结尾
}
JSON 与 JavaScript

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

格式:JSON.stringify(对象名);

看例子:

//定义一个JavaScript对象
var info = {
    name: 'yan',
    age: 18,
    gender: true,
    height: 1.85,
    grade: null,
    'middle-school': '\"W3C\" Middle School',
    skills: ['JavaScript', 'Java', 'Python', 'Lisp']
};
JSON.stringify(info); //'{"name":"yan","age":18,"gender":true,"height":1.85,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}'
//输出得好看一些,可以加上参数,按缩进输出
JSON.stringify(info, null, '  ');
//结果
{
  "name": "yan",
  "age": 18,
  "gender": true,
  "height": 1.85,
  "grade": null,
  "middle-school": "\"W3C\" Middle School",
  "skills": [
    "JavaScript",
    "Java",
    "Python",
    "Lisp"
  ]
}

格式:JSON.stringify(属性1, 属性2,属性3);

第二个参数用于控制如何筛选对象的键值,如果我们只想输出指定的属性,可以传入Array:

JSON.stringify(xiaoming, ['name', 'skills'], '  ');
//结果
{
  "name": "yan",
  "skills": [
    "JavaScript",
    "Java",
    "Python",
    "Lisp"
  ]
}

还可以传入一个函数,这样对象的每个键值对都会被函数先处理:

function convert(key, value) {
    if (typeof value === 'string') {
        return value.toUpperCase();
    }
    return value;
}

JSON.stringify(info, convert, '  ');

上面的代码把所有属性值都变成大写:

{
  "name": "YAN",
  "age": 18,
  "gender": true,
  "height": 1.85,
  "grade": null,
  "middle-school": "\"W3C\" MIDDLE SCHOOL",
  "skills": [
    "JAVASCRIPT",
    "JAVA",
    "PYTHON",
    "LISP"
  ]
}

如果我们还想要精确控制如何序列化yan,可以给info定义一个toJSON()的方法,直接返回JSON应该序列化的数据:

var info = {
    name: 'yan',
    age: 18,
    gender: true,
    height: 1.85,
    grade: null,
    'middle-school': '\"W3C\" Middle School',
    skills: ['JavaScript', 'Java', 'Python', 'Lisp'],
    toJSON: function () {
        return { // 只输出name和age,并且改变了key:
            'Name': this.name,
            'Age': this.age
        };
    }
};

JSON.stringify(info);   // '{"Name":"yan","Age":18}'

2.反序列化

如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以在JavaScript中直接使用这个对象了。

拿到一个JSON格式的字符串,我们直接用JSON.parse()把它变成一个JavaScript对象:

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

JSON.parse()还可以接收一个函数,用来转换解析出的属性:

JSON.parse('{"name":"yan","age":18}', function (key, value) {
    if (key === 'name') {
        return value + '同学';
    }
    return value;
}); // Object {name: 'yan同学', age: 18}

在JavaScript中使用JSON,就是这么简单!

总结

就最近写了很多Ajax的东西,接触到Ajax的第一件事就是HttpXML.send()之后,服务器要返回什么数据,一般都是responseText或responseXML,也就是说,1. 返回纯文字;2. 返回XML,纯文字难以分析处理(要跑DOM时),XML在服务器端要花很多力气去‘组合’出XML数据,然后用户端再写很多Code去分析处理,这是很没效率的。对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值