JSON.parse()和JSON.stringify()

来源:互联网 发布:编译java的软件 编辑:程序博客网 时间:2024/06/11 17:21

JSON.parse() 方法解析一个JSON字符串,构造由字符串描述的JavaScript值或对象。可以提供可选的reviver函数以在返回之前对所得到的对象执行变换。返回的是一个对象。

JSON.parse(text[, reviver])

参数

text
要被解析成JavaScript值的字符串,查看 JSON 对象学习的JSON 语法的说明。
reviver 可选
如果是一个函数,则规定了原始值如何被解析改造,在被返回之前。

返回值

Object对应给定的JSON文本。

异常

若被解析的 JSON 字符串是非法的,则会抛出 一个语法错误 异常。

示例

var str='{"name":"zhangsan","age":22}';

JSON.parse(str);

得到:

Object: age:"22"

            name:"zhangsan"

            _proto_:Object

使用 reviver 函数

JSON.parse('{"p": 5}', function (k, v) {    if(k === '') return v;     // 如果到了最顶层,则直接返回属性值,    return v * 2;              // 否则将属性值变为原来的 2 倍。});                            // { p: 10 }

JSON.parse() 不允许用逗号作为结尾

// both will throw a SyntaxErrorJSON.parse("[1, 2, 3, 4, ]");JSON.parse('{"foo" : 1, }');


--------------------------------------------------------------------------


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

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

参数

value
将要序列化成 一个JSON 字符串的值。
replacer 可选
如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;如果该参数为null或者未提供,则对象所有的属性都会被序列化;关于该参数更详细的解释和示例,请参考使用原生的 JSON 对象一文。
space 可选
指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数为字符串(字符串的前十个字母),该字符串将被作为空格;如果该参数没有提供(或者为null)将没有空格。

返回值 

一个表示给定值的JSON字符串。

JSON.stringify({x: 5, y: 6});              // "{"x":5,"y":6}"
function replacer(key, value) {  if (typeof value === "string") {    return undefined;  }  return value;}var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};var jsonString = JSON.stringify(foo, replacer);
JSON序列化结果为 {"week":45,"month":7}.


原创粉丝点击