WithCoderWithCoderWithCoder

Javascript处理JSON方法JSON.parse()和JSON.stringify()

    JSON 是用于存储和传输数据的格式,它通常用于服务端向网页传递数据 。而在前端页面js处理中,经常会将字符串和对象进行互相转换,js提供了一个JSON对象来处理这种转换。JSON对象包含两个方法:用于解析 JSON 的 parse() 方法,以及将对象/值转换为 JSON字符串的 stringify() 方法。除了这两个方法, JSON这个对象本身并没有其他作用,也不能被调用或者作为构造函数调用。

    本文简单介绍JSON对象两个方法的使用。

    1. JSON.parse()    

    JSON.parse() 方法用于将一个 JSON 字符串转换为对象,并返回转换后的对象。

    语法:

JSON.parse(text[, reviver])

    参数说明:

        text:必需, 一个有效的 JSON 字符串。

        reviver:可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

    举例:

<script>
    // 定义一个json字符串
    var str = '[{"id":"1","name":"zhangsan","age":100},{"id":"2","name":"lisi","age":80}]';
    
    // 默认转换
    var obj1 = JSON.parse(str);
    
    // 使用回调函数
    var obj2 = JSON.parse(str, function (k, v) {
        // 给key为name的对象成员值加上_china
        if (k == 'name') {
            return v + '_china';
        }
        return v;
    });
    
    console.log(obj1);
    console.log(obj2);
</script>

    在控制台中打印以上代码结果,如下:

    1-200H31G44L32.png

    注意:

        1. 属性名称必须是双引号括起来的字符串,最后一个属性后不能有逗号。

        2. 数值禁止出现前导零( JSON.stringify 方法自动忽略前导零,而在 JSON.parse 方法中将会抛出 SyntaxError);如果有小数点, 则后面至少跟着一位数字。

        3. 只有有限的一些字符可能会被转义;禁止某些控制字符; Unicode 行分隔符 (U+2028)和段分隔符 (U+2029)被允许 ; 字符串必须用双引号括起来。

    2. JSON.stringify()   

    JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。

    语法:

JSON.stringify(value[, replacer[, space]])

    参数说明:

        value:必需, 要转换的 JavaScript 值(通常为对象或数组)。

        replacer:可选。用于转换结果的函数或数组。

            如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。

            如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。

        space:可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。

    举例:

<script>
    // 定义一个实例对象
    var obj = [{id: "1", name: "zhangsan", age: 100}, {id: "2", name: "lisi", age: 80}];
    
    // 默认转换
    var str1 = JSON.stringify(obj);
    
    // 使用replacer回调函数
    var str2 = JSON.stringify(obj, function (k, v) {
        // 给key为name的对象成员值加上_china
        if (k == 'name') {
            return v + '_china';
        }
        return v;
    });
    
    console.log(str1);
    console.log(str2);
</script>

    在控制台中打印以上代码结果,如下:

    1-200H31P035502.png

欢迎分享交流,转载请注明出处:WithCoder » Javascript处理JSON方法JSON.parse()和JSON.stringify()