JavaScript – JSON

一种数据格式,太常用了。

ES5中定义了一个全局对象JSON,有两个方法:stringify()和parse(),分别用于序列化和解析。

1. JSON的序列化

var person = {
    name: ‘smallSan‘,
    age: 21,
    job: null,
    ‘‘: 123,
    title: window.undef, // 并没有该属性
    sayName: function(){
        console.info(this.name);
    }
};
JSON.stringify(person); //"{"name":"smallSan","age":21,"job":null,"":123}"

默认情况下,JSON.stringify()输出的JSON串不包含任何空格和缩进,如上。

在序列化JS对象时,所有的函数及原型成员都会被忽略,值为undefined的熟悉也会被忽略。

序列化的选项

JSON.stringify()除了要序列化的JS对象外,还可接受两个参数:过滤器(可以是数组或函数)、缩进的空格数。

过滤器为数组:结果中只包含数组中列出的属性。

JSON.stringify(person, [‘name‘, ‘jod‘]); // "{"name":"smallSan"}"

过滤器为函数:传入的函数接收属性名和值两个参数,属性名只能为串,但可为空串,为了改变序列化对象的结果,函数返回的值就是该属性的值,若函数返回undefined,则对应属性被忽略。

JSON.stringify(person, function (k, v) {
    if (k == ‘age‘)
        return undefined;
    return v;
}); // "{"name":"smallSan","job":null,"":123}"

缩进的空格数:

最大缩进空格数为10,大于10会转为10。

toJSON()方法

若给对象定义了toJSON()方法,那么JSON.stringify(obj)就会调用obj的toJSON()方法。

var person = {
    name : ‘smallSan‘,
    age : 21,
    job : null,
    ‘‘ : 123,
    title : window.undef, // 并没有该属性
    sayName : function () {
        console.info(this.name);
    },
    toJSON : function () {
        return this.name;
    }
};
JSON.stringify(person); // "smallSan"

2. JSON的解析

JSON是JavaScript语法的子集,因此可以使用eval()解析。

鉴于eval()比较危险,一般使用JSON.parse()解析。

JSON.parse()也可接收与序列化时过滤函数相同的函数(还原函数),该函数返回undefined,表示从结果中删除相应键,否则插入结果中。

将日期字符串转为日期对象时,还原函数较为常用。

var book = {
    "title" : "Professional JavaScript",
    "authors" : [
        "Nicholas C. Zakas"
    ],
    edition : 3,
    year : 2011,
    releaseDate : new Date(2011, 11, 1)
};
var jsonText = JSON.stringify(book);
var bookCopy = JSON.parse(jsonText, function (key, value) {
        if (key == "releaseDate") {
            return new Date(value);
        } else {
            return value;
        }
    });
console.info(bookCopy.releaseDate.getFullYear()); // 2011
时间: 2024-10-25 13:21:19

JavaScript – JSON的相关文章

javascript.json snippets vscode 注释

vscode vue js里面的注释 javascript.json { // Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // description. Add comma separated ids of the languages where the snippet is applicable in the sc

JavaScript JSON 与 AJAX

JavaScript JSON 与 AJAX JSON 是一种轻量的数据交互格式,与 AJAX 配合完成前端与服务端的信息传递,本文介绍 JSON 的使用.原生 AJAX 写法.JSONP 跨域解决方法以及 AJAX 和 JSONP 工具函数的封装 JSON 的概念 所有编程语言都离不开的三大数据结构 scalar 标量:数字和字符串 sequence 序列:数组和列表 mapping 映射:键值对 JSON:JavaScript Object Notation,轻量级的数据交互格式 JSON

javascript json字符串与对象相互转换

在实际项目中,经常遇到字符格式的问题,记下来以便日后方便查看.用到两个函数:JSON.stringify() 和 JSON.parse(). 使用ajax向后台请求数据,后台给前端返回数据,明明后端脚本写的是json函数处理后的json格式,但是前端接收数据时,却时而是object,时而是字符串,令人百思不得其解.具体原因我还不是很清楚. 在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象.所以,JSON对象和JSON字符串之间的相互转换是关键 我的解决思路是:

JavaScript Json(转)

JSON是JavaScript Object Notation的缩写,它是一种数据交换格式. 终于,在2002年的一天,道格拉斯·克罗克福特(Douglas Crockford)同学为了拯救深陷水深火热同时又被某几个巨型软件企业长期愚弄的软件工程师,发明了JSON这种超轻量级的数据交换格式. 道格拉斯同学长期担任雅虎的高级架构师,自然钟情于JavaScript.他设计的JSON实际上是JavaScript的一个子集.在JSON中,一共就这么几种数据类型: number:和JavaScript的n

C/C++,Java,PHP,JavaScript,Json数组、对象赋值时,最后一个元素后面是否可以带逗号?

1 C,C++,Java,PHP都能容忍末尾的逗号 C,C++,Java中对数组赋值时,最后一个元素末尾的逗号可有可无.下面两行代码对这些语言来说是等效的. int a[] = {1,2,3}; /* 正确 */ int a[] = {1,2,3,}; /* 正确 */ PHP这一点也继承了C的特点,下面的两行代码等效. $a = array(1,2,3); /* 正确 */ $a = array(1,2,3,); /* 正确 */ 2 JavaScript视末尾逗号为语法错误! 然而到了Jav

Sublime Text插件:HTML+CSS+JAVASCRIPT+JSON快速格式化[转]

今天在github上乱逛,无意间找到victorporof分享的htmlpretty插件,特做推荐: 先看看他是怎么描述htmlpretty的: This is a Sublime Text 2 and 3 plugin allowing you to format your HTML, CSS, JavaScript and JSON code. It uses a set of nice beautifier scripts made by Einar Lielmanis. The form

JavaScript JSON 格式操作

关于JSON,最重要的是要理解它是一种数据格式,而不是一种编程语言.虽然具有相同的语法,但JSON并不从属于JavaScript.而且,并不是只有JavaScript才使用JSON,毕竟JSON只是一种数据格式.很多编程语言都有针对JSON的解析器和序列化器. 首先,说一下JSON的语法,JSON由三种类型组成,简单.对象.数组.简单值包括数值.字符串.布尔值.null.对象由一组键值对组成,其中可以嵌套数组和对象.数组表示一组有序的值得列表,可以包含数组和对象. console.log(JSO

松软科技Web课堂:JavaScript JSON

JSON 是存储和传输数据的格式. JSON 经常在数据从服务器发送到网页时使用. 什么是 JSON? JSON 指的是 JavaScript Object Notation JSON 是轻量级的数据交换格式 JSON 独立于语言 * JSON 是“自描述的”且易于理解 * JSON 的语法是来自 JavaScript 对象符号的语法,但 JSON 格式是纯文本.读取和生成 JSON 数据的代码可以在任何编程语言编写的. JSON 实例 JSON 语法定义了一个雇员对象:包含三条员工记录的数组(

HTML,CSS,JavaScript,json,xml之间的关系

1.浏览器工作原理: https://blog.csdn.net/Luncles/article/details/80320082 2.HTML,XML,JSON之间的关系: https://blog.csdn.net/qq_36346262/article/details/79335397 3.CSS,HTML,JavaScript并列: HTML+CSS:静态网页 Javascript:动态,交互的一些功能 4.jQuery是JavaScript的一个函数库,可以会HTML进行操作 5.用好