JSON.stringify()

JSON.stringify()是Javascript中一个常用的内置 JSON 转换方法,JSON.stringify()可以把JSONObject 转化为 JSON 规则的字符串转换为,JSON.stringify()很方便,并且几乎支持所有浏览器。

JSON.stringify() 语法

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

JSON.stringify() 参数说明

参数 参数说明 备注
value 将要序列化成 一个JSON 字符串的值。 必选
replacer 如果是一个function,那么每个序列化成JSON的value都会经过这个function,如果是一个Array,那么序列化后的JSON字符串中的Key在这个数组中才会加入到返回的JSON 字符串中去。 可选
space 用于美化JSON字符串,如果是一个Number类型,代表的就是多少个空格。如果是0或者小于0,那么就是没有空格(和不填此项没有区别),如果是字符串,那么直接填充。 可选

JSON.stringify() 返回值说明

返回值是一个 JSON字符串,如:"{"domain":"ecjson.com"}"

JSON.stringify() JSON To String

测试样例如下:

  1. var json = {"domain" : "ecjson.com","author":"ecjson"}

它就是一个正常的JSON对象,我们需要把它转换成字符串,这个时候JSON.stringify() 就可以派上用场了。

  1. var json = {"domain" : "ecjson.com","author":"ecjson"}
  2. alert(JSON.stringify(json));

运行一下试试

其实它外层是有一对双引号包裹起来的。也就是实际是这样的"{"domain" : "ecjson.com","author":"ecjson"}"。

JSON.stringify() replacer参数(1)

replacer参数可以是function,也可以是Array,如果是function,他接收的参数有2个,第一个是Key,第二个是Value。

replacer function返回值说明:

  • 如果返回一个 Number, 转换成相应的字符串被添加入JSON字符串。
  • 如果返回一个 String, 该字符串作为属性值被添加入JSON。
  • 如果返回一个 Boolean, "true" 或者 "false"被作为属性值被添加入JSON字符串。
  • 如果返回undefined,该属性值不会在JSON字符串中输出。
  1. var json = {"domain" : "ecjson.com","author":"ecjson"}
  2. json = JSON.stringify(json, function(key,value){
  3. if(key == "domain"){
  4. return undefined;//踢出domain
  5. };
  6. return value;
  7. });

运行一下试试

JSON.stringify() replacer参数(2)

如参数replacer是一个数组,序列化结果集的Key只输出命中的,miss的属性过滤。

replacer Array参数:

  1. var json = {"domain" : "ecjson.com","author":"ecjson"}
  2. json = JSON.stringify(json, ['author']);
  3. alert("JSON = " + json);//结果只留下了命中Key的元素组合。

运行一下试试

JSON.stringify() space 参数(1) / JSON 格式化

space参数前面也说了,是用来美化输JSON的。

space 每个元素前面都间隔10个空格:

  1. var json = {"domain" : "ecjson.com","author":"ecjson"}
  2. alert(JSON.stringify(json,null,10));

运行一下试试

space 也可以用‘tab’来定制空格美化输出,采用“\t”即可,如:

  1. JSON.stringify({"domain" : "ecjson.com","author":"ecjson"},null,'\t')

JSON.stringify() space 参数(2)

space 增加固定的字符串。

  1. var json = {"domain" : "ecjson.com","author":"ecjson"}
  2. alert(JSON.stringify(json,null,"我是ecjson"));

运行一下试试

JSON.stringify() 其他常用展示

  1. JSON.stringify({}); // '{}'
  2. JSON.stringify(true); // 'true'
  3. JSON.stringify("ecjson"); // '"ecjson"'
  4. JSON.stringify([1, "false", false]); // '[1,"false",false]'
  5. JSON.stringify({ abc: 5 }); // '{"abc":5}'
  6. JSON.stringify({x: 5, y: 6}); // "{"x":5,"y":6}"
  7.  
  8. JSON.stringify([new Number(1), new String("false"), new Boolean(false)]);// '[1,"false",false]'
  9.  
  10. JSON.stringify({x: undefined, y: Object, z: Symbol("")}); // '{}'
  11.  
  12. JSON.stringify([undefined, Object, Symbol("")]); // '[null,null,null]'
  13.  
  14. JSON.stringify({[Symbol("ecjson")]: "ecjson"}); // '{}'
  15.  
  16. JSON.stringify({[Symbol.for("ecjson")]: "ecjson"}, [Symbol.for("ecjson")]); // '{}'

JSON.stringify() 浏览器支持问题

  • Firefox 3.5 + (目前已经50+版本了)
  • Internet Explorer 8 +(这个...)
  • Chrome(一直支持)
  • Opera 10 +
  • Safari 4 +