由于JSON非常简单,很快就风靡Web世界,并且成为ECMA标准。几乎所有编程语言都有解析JSON的库,而在JavaScript中,我们可以直接使用JSON,因为JavaScript内置了JSON的解析。

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

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

序列化(JS对象——>JSON)

让我们先把小明这个对象序列化成JSON格式的字符串:

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

要输出得好看一些,可以加上参数,按缩进输出:
JSON.stringify(xiaoming, null, '  ');

结果:

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

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

JSON.stringify(xiaoming, ['name', 'skills'], '  ');

结果:

{"name": "小明","skills": [    "JavaScript",    "Java",    "Python",    "Lisp"]
}

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

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

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

{"name": "小明","age": 14,"gender": true,"height": 1.65,"grade": null,"middle-school": "\"W3C\" MIDDLE SCHOOL","skills": [    "JAVASCRIPT",    "JAVA",    "PYTHON",    "LISP"]
}

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

var xiaoming = {name: '小明',age: 14,gender: true,height: 1.65,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(xiaoming); // '{"Name":"小明","Age":14}'

反序列化

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

JSON.parse('[1,2,3,true]'); 

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

JSON.parse()还可以接收一个函数,用来转换解析出的属性:
JSON.parse('{"name":"小明","age":14}', function (key, value) {// 把number * 2:if (key === 'name') {        return value + '同学';}    return value;
}); // Object {name: '小明同学', age: 14}

转载于:https://www.cnblogs.com/zjfjava/p/6843137.html

JSON——JavaScript 中的使用相关推荐

  1. JSON—JavaScript中的JSON

    JSON的数据格式 JavaScript中的JSON 1.JavaScript与JSON JSON是一种语法,用来序列化对象.数组.数值.字符串.布尔值 null.他基于JavaScript语法,但与 ...

  2. js html保存json,如何在json文件中存储jQuery或javascript变量?

    我可以知道有没有机会将jquery变量保存在json文件中?提前致谢.如何在json文件中存储jQuery或javascript变量? 我: var image='/test/test.png'; 我 ...

  3. JavaScript中的JSON

    JSON是什么? JSON格式(JavaScript Object Notation 的缩写)是一种用于数据交换的文本格式.就是符合某种规范的文本格式,经常用于与服务器做数据交换,比传统的XML更简洁 ...

  4. 在JavaScript中解析JSON? [重复]

    本文翻译自:Parse JSON in JavaScript? [duplicate] This question already has answers here : 这个问题已经在这里有了答案 : ...

  5. 服务器json文件怎么创建对象,JavaScript中对JSON对象的基本操作示例

    JSON对象 1.对象的属性:对象的属性是有键值对组成的,其中key为一个字符串,value可以为任何的Javascript对象. //使用[]设置和获取对象的属性 var obj = new Obj ...

  6. Json学习总结(1)——Java和JavaScript中使用Json方法大全

    2019独角兽企业重金招聘Python工程师标准>>> 摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript ...

  7. 在 JavaScript 中创建 JSON 对象

    <html> <body> <h2>在 JavaScript 中创建 JSON 对象</h2><p> Name: <span id=& ...

  8. jsonp请求html页面,JavaScript中的JSON和JSONP

    简单地使用json并不能支持跨域资源请求,为了解决这个问题,需要采用jsonp数据交互协议.众所周知,js文件的调用不受跨域与否的限制,因此如果想通过纯web端跨域访问数据,只能在远程服务器上设法将j ...

  9. javascript中对象、JSON格式数据、创建对象的方式、数据类型分类及特点

    对象 对象指:具体的一个实物,javascript中对象是指一组没有顺序的属性和方法的集合,所有的事物都是对象,例如:函数,数组,字符串等.属性指事物的特征,一般为名词表示:方法指对象的行为,一般用动 ...

  10. 【JavaScript】在JavaScript中使用JSON进行序列化/反序列化操作

    文章目录 用于stringfy/parse操作的"JSON"对象 JavaScript中简单数据类型的JSON序列化操作 使用toJSON()进行对象的序列化操作 使用eval() ...

最新文章

  1. 使用回调函数实现图像阈值分析。程序运行后在屏幕中输入阈值,通过改变滑动条实现不同类型的二值化图。
  2. 微博云原生技术的思考与实践
  3. Oracle后台进程
  4. 使用fpm简单制作自定义rpm包
  5. 【学亮IT手记】oracle集合运算
  6. linux 限制连接时间,linux抵御DDoS攻击方法 通过iptables限制TCP连接和频率
  7. Flink AggOperatorWholeWin 全窗口聚合函数
  8. 计算机网络学习笔记(3. 计算机网络结构)
  9. MyStringTokenize
  10. QTCreator快捷键
  11. HDU 6351 (Beautiful Now) 2018 Multi-University Training Contest 5
  12. 分布式架构之缓存系统
  13. WinForm主窗口框架的设计
  14. PcShare服务端改造
  15. Fedora35安装ibus-rime并配置五笔86方案
  16. 本周测试服务器角色转移系统仅开放转入,梦幻西游3月11日更新一览
  17. 精油商城小程序,让您的品牌更出彩!
  18. Prometheus(二)基础概念
  19. 4.网络设备基础配置实验
  20. substring与substr的区别

热门文章

  1. 鸿蒙2.0内测版手机版,不再遮遮掩掩,鸿蒙2.0测试版下月发布,用于手机内测
  2. PHP Default value for parameters with a class type hint can only be NULL
  3. Java中递归复制多级文件夹(IO流)
  4. 基于springboot+vue的智慧教室预约系统(前后端分离)
  5. java基础总结03-进制
  6. 自定义rest api的基本思想过程--总结
  7. 小D课堂 - 新版本微服务springcloud+Docker教程_2_02 微服务核心基础讲解
  8. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第2节 TCP协议_1_TCP通信的概述(上)...
  9. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_3_等待唤醒案例代码实现...
  10. user 不在 sudoers 文件中。此事将被报告。