`
wsj123
  • 浏览: 154282 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JSON.stringify()方法详解

阅读更多
JSON.stringify()方法详解


    JSON.stringify()方法主要是系列化对象。即把原来是对象的类型转换成字符串类型(或者更确切的说是json类型的)。该方法可以将任意的JS值序列化成JSON字符串。
1.1语法
    JSON.stringify(value [, replacer] [, space])。
1.2参数介绍
    value:是必须的,即将要序列化成JSON字符串的值。比如数组。
    replacer:是可选的。分为2种方式,一种是方法,第二种是数组。
    space:是可选的,指定缩进用的空白字符串,用于美化输出(pretty-print)。
若省略,直接输出来值。
若是一个数字,即定义缩进几个字符。如果数值大于10,则最大值为10。
若转义字符,比如“\t”,表示回车。
若仅仅是字符串,每行输出值时会把这些字符串附加其前。最大长度是10个字符。
1.3实例详解
例1:
    只有一个参数。
var student = new Object();
student.name = "Lanny";
student.age = "25";
student.location = "China";
var json = JSON.stringify(student);
alert(json);

例2:
    第二个参数存在,且第二个参数是function。则把系列化后的每一个对象传进方法里面进行处理。
var students = ["Lanny","dong","I love you"];
var json = JSON.stringify(students, function(key,value) {
    console.log(value);
return value.toString();
});
alert(json);

例3:
    第二个参数存在,且第二个参数数组。
例3-1:
    若第一个参数是数组,第二个参数也是数组,则第二个被忽略了,只是第一个被系列化了。
var students = ["Lanny","dong","I love you"];
var stu = ["1","2"];
var json = JSON.stringify(students,stu);
alert(json);

例3-1:
    若第一个参数是对象,第二个参数是数组的。再若数组的value在对象存在,则以数组的值做key,对象值为value进行转换。若不存在,则忽略。
var student ={qq : "5485891512", name : "Lanny", age : 25};
var stu =["qq","age","Hi"];
var json = JSON.stringify(student,stu); 
alert(json);

例4:
    第三个参数。
例4-1:
    第三个参数省略,如上述例3。
例4-2:
    第三个参数是一个数字。
var student ={qq : "5485891512", name : "Lanny", age : 25};
var stu =["qq","age","Hi"];
var json = JSON.stringify(student,stu,100);
alert(json);

例4-3:
    第三个参数是转义字符。
var student ={qq : "5485891512", name : "Lanny", age : 25};
var stu =["qq","age","Hi"];
var json = JSON.stringify(student,stu,"\t");
alert(json);

例4-4:
    第三个参数仅仅是字符串。
var student ={qq : "5485891512", name : "Lanny", age : 25};
var stu =["qq","age","Hi"];
var json = JSON.stringify(student,stu,"HaiKou");
alert(json);

1.4序列化注意事项
1.4.1事项
    非数组对象的属性不能保证以特定的顺序出现在序列化后的字符串中。
    布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值。
    undefined、任意的函数以及symbol值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)。
    以symbol为属性键的属性都会被完全忽略掉,即便replacer参数中强制指定包含了它们。
    不可枚举的属性会被忽略。
1.4.2实例详解
例1:
    序列化一个对象。
JSON.stringify({}); //返回值:'{}'
JSON.stringify({ x: 5 }); //返回值:'{"x":5}'
JSON.stringify({x: 5, y: 6}); //返回值:'{"x":5,"y":6}' 或者 '{"y":6,"x":5}'

例2:
    序列化一个字符串。
JSON.stringify("foo"); //返回值:'"foo"'
例3:
    序列化一个布尔值。
JSON.stringify(true); //返回值:'true'
例4:
    序列化一个数字。
JSON.stringify(new Number(1)); //返回值:'1'
例5:
     序列化一个含有布尔值、数字、字符串的对象。
JSON.stringify([1, "false", false]); //返回值:'[1,"false",false]'
JSON.stringify([new Number(1), new String("false"), new Boolean(false)]); //返回值:'[1,"false",false]'

例6:
   其他序列化情况。
JSON.stringify({x: undefined, y: Object, z: Symbol("")}); //返回值:'{}'
JSON.stringify([undefined, Object, Symbol("")]); //返回值:'[null,null,null]'
JSON.stringify({[Symbol("foo")]: "foo"}); //返回值:'{}'
JSON.stringify({[Symbol.for("foo")]: "foo"}, [Symbol.for("foo")]); //返回值:'{}'
JSON.stringify( Object.create(null, { x: { value: 'x', enumerable: false }, y: { value: 'y', enumerable: true } }) );// 返回值:'{"y":"y"}'

1.5扩展——toJSON 方法
    如果一个被序列化的对象拥有toJSON方法,那么该toJSON方法就会覆盖该对象默认的序列化行为:不是这个对象被序列化,而是调用toJSON方法后的返回值会被序列化。
例:
var obj = {
foo:'foo',
toJSON : function(){
    return 'bar';
}
};
JSON.stringify(obj); //返回值:'"bar"'
JSON.stringify({x:obj}); //返回值:'{"x":"bar"}'

分享到:
评论

相关推荐

    JSON.stringify 语法实例讲解

    ### JSON.stringify 语法实例讲解 #### 一、概述 在JavaScript中,`JSON.stringify` 是一个非常实用且强大的函数,用于将JavaScript值转换为JSON字符串。这对于存储或传输数据非常有用,尤其是在网络请求中,经常...

    js JSON.stringify()基础详解

    JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串,如果指定了replacer是一个函数,则可以选择性的替换值,或者如果指定了replacer是一个数组,可选择性的仅包含数组指定的属性

    你可能不知道的JSON.stringify()详解

    本文深入讲解JavaScript中使用JSON.stringify的一些细节问题。首先简单回顾一下JSON和JavaScript: 不是所有的合法的JSON都是有效的JavaScript; JSON只是一个文本格式; JSON中的数字是十进制。 1. JSON....

    详解如何提升JSON.stringify()的性能

    JSON.stringify() 是JavaScript中用于将JSON对象转换成字符串的关键函数,广泛应用于数据存储、网络传输以及数据处理等场景。然而,随着数据量的增加,原始的JSON.stringify()可能会成为性能瓶颈,尤其是在高并发和...

    详解JSON.stringify()的5个秘密特性

    JSON.stringify()方法是JavaScript中用于将JavaScript对象或值转换成JSON字符串的重要工具。这个方法有三个可选参数,每一个都提供了不同的功能和灵活性,使得在处理复杂的数据结构时更为便捷。 1. 第二个参数...

    json3.js 【JS / JavaScript 中解析JSON的js包,JSON官方的JSON解析包】

    json3.js 【JS / JavaScript 中...JavaScript中解析JSON --- JSON.parse()、JSON.stringify()以及$.parseJSON()使用详解 - chunlynn的小屋 - CSDN博客 http://blog.csdn.net/chenchunlin526/article/details/78850924

    深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解

    总之,JSON.parse()和JSON.stringify()是处理JSON数据的标准方法,前者用于从JSON字符串中生成JavaScript对象,后者则用于将对象转换成JSON字符串。eval()函数虽然在某些情况下可以起到类似的作用,但它执行的是任意...

    json常用方法,json解析

    #### 二、JSON.stringify 方法详解 `JSON.stringify()` 方法用于将 JavaScript 对象或数组转换为 JSON 字符串。此方法支持以下参数: 1. **value**:任何有效的 JavaScript 值(如对象或数组)。 2. **replacer**...

    json转换(js)

    #### 二、JSON转换方法详解 ##### 1. 使用`eval()`进行转换 在早期的JavaScript开发中,开发者可能会使用`eval()`函数来将JSON字符串转换为JavaScript对象。例如: ```javascript var str = '{"name":"张三","sex...

    Django后端接收嵌套Json数据及解析详解

    1、前端传值的数据必须使用JSON.stringify()传化 2、后端,通过request.body接收数据,直接使用json.loads解析,解析前,先decode一下:receive_data = json.loads(request.body.decode())。如果使用simplejson....

    JSON与js对象序列化实例详解.docx

    在JavaScript中,可以使用`JSON.parse()`方法将JSON字符串转换回JavaScript对象,而`JSON.stringify()`方法则可以将JavaScript对象转换为JSON字符串。例如: ```javascript let obj = { num: 5, stop: true, str...

    Json页面总结

    虽然示例代码中没有明确展示,但 `JSON.parse()` 方法是与 `JSON.stringify()` 相对的方法,用于将 JSON 字符串转换成 JavaScript 对象。这对于从服务器获取 JSON 数据并将其解析为可以操作的对象非常重要。 ### ...

    json转换.docx

    这两种方法都可以将 JavaScript 对象转换为 JSON 字符串,但需要注意的是,使用 toJSONString() 方法时,需要将对象转换为 JSON 字符串,而使用 JSON.stringify() 方法时,需要将对象转换为 JSON 字符串,并将其作为...

Global site tag (gtag.js) - Google Analytics