1、方法的定义

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

参数:

(1)value:必选,要转换的值(包括所有的数据类型,通常是对象或者数组)

(2)replace:可选,用于要转换结果的函数或者数组;如果replace是数组,仅仅是转换具有该键值的成员,成员的转换顺序和键在数组中的顺序一致;如果replace是函数,会传入每一个成员的键和值,使用的是返回值而不是原始值,如果函数返回的是undefined,则排除该成员。查看了JSON2的源码,

  rx_escapable.lastIndex = 0;return rx_escapable.test(string)? "\"" + string.replace(rx_escapable, function (a) {var c = meta[a];return typeof c === "string"? c: "\\u" + ("0000" + a.charCodeAt(0).toString(16)).slice(-4);}) + "\"": "\"" + string + "\"";}

确认并不会传入每个成员的键和值,而仅仅以空字符串形式调用replacer函数。该函数的实质是自定义的用于转化为JSON字符串的函数。

(3)space:可选, 向返回值JSON 文本添加缩进、空格和换行符以使其更易于读取。

 如果省略space,则将生成返回值文本,而没有任何额外空格。

 如果 space是一个数字,则返回值文本在每个级别缩进指定数目的空格。 如果 space 大于 10,则文本缩进 10 个空格。

 如果 space是一个非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符。

 如果 space 是长度大于 10个字符的字符串,则使用前 10 个字符。

2、JSON.stringify提供了分离出自己需要的那部分数据

比如说这个场景,我们的数据非常的复杂,有类似头像,昵称,个人签名等,可是我保存在本地,只需要用户名,性别,怎么搞?

方法一:可以用遍历数组重新提取一下

var data =[
{name: "程咬金",sex:"1",age:26
},
{name: "程才",sex:"0",age:20
},
{name: "程新松",sex:"1",age:22
},
{name: "程功",sex:"1",age:18
}
];
/*日常用法*/
//console.log(data,'数组');
//var str_json = JSON.stringify(data);
//console.log(str_json,'字符串');/*提取用户名和性别*/
for(var i=0,new_data=[];i<data.length;i++){new_data.push({name: data[i].name,sex: data[i].sex});
}
var str_json = JSON.stringify(new_data);
console.log(str_json);

方法二:的确可以这么干,但是JSON.stringify提供了参数分离出自己需要的那部分数据

var data =[
{name: "程咬金",sex:"1",age:26
},
{name: "程才",sex:"0",age:20
},
{name: "程新松",sex:"1",age:22
},
{name: "程功",sex:"1",age:18
}
];
/*日常用法*/
//console.log(data,'数组');
//var str_json = JSON.stringify(data);
//console.log(str_json,'字符串');/*提取用户名和性别-方法1*/
//for(var i=0,new_data=[];i<data.length;i++){
//    new_data.push({
//        name: data[i].name,
//        sex: data[i].sex
//    });
//}
//var str_json = JSON.stringify(new_data);
//console.log(str_json);
/*提取用户名和性别-方法2*/
var str_json = JSON.stringify(data,["name","sex"]);
console.log(str_json);

第二个参数只要传入需要的keys数组,就非常轻松的处理这个

3JSON.stringify提供了回调函数做一个映射关系

比如说,我们把sex里的1,0修改为男,女 ,那么第二个参数可以通过回调函数来处理这个映射关系。

var data =[
{name: "程咬金",sex:"1",age:26
},
{name: "程才",sex:"0",age:20
},
{name: "程新松",sex:"1",age:22
},
{name: "程功",sex:"1",age:18
}
];
/*日常用法*/
//console.log(data,'数组');
//var str_json = JSON.stringify(data);
//console.log(str_json,'字符串');/*提取用户名和性别-方法1*/
//for(var i=0,new_data=[];i<data.length;i++){
//    new_data.push({
//        name: data[i].name,
//        sex: data[i].sex
//    });
//}
//var str_json = JSON.stringify(new_data);
//console.log(str_json);
/*提取用户名和性别-方法2*/
//var str_json = JSON.stringify(data,["name","sex"]);
//console.log(str_json);/*回调函数做一个映射关系*/
var str_json = JSON.stringify(data,function(key,value){if(key == 'sex'){return ["女",'男'][value];}return value;
});
console.log(str_json);

第二个参数很厉害,省去了不少的麻烦

4、JSON.stringify提供了参数格式化字符串

第三个参数,用于格式化字符串

var data =[
{name: "程咬金",sex:"1",age:26
},
{name: "程才",sex:"0",age:20
},
{name: "程新松",sex:"1",age:22
},
{name: "程功",sex:"1",age:18
}
];
/*日常用法*/
//console.log(data,'数组');
//var str_json = JSON.stringify(data);
//console.log(str_json,'字符串');/*提取用户名和性别-方法1*/
//for(var i=0,new_data=[];i<data.length;i++){
//    new_data.push({
//        name: data[i].name,
//        sex: data[i].sex
//    });
//}
//var str_json = JSON.stringify(new_data);
//console.log(str_json);
/*提取用户名和性别-方法2*/
//var str_json = JSON.stringify(data,["name","sex"]);
//console.log(str_json);/*回调函数做一个映射关系*/
//var str_json = JSON.stringify(data,function(key,value){
//    if(key == 'sex'){
//        return ["女",'男'][value];
//    }
//    return value;
//});
//console.log(str_json);/*格式化字符串*/
var str_json = JSON.stringify(data,null,'\t');
console.log(str_json);
var str_json = JSON.stringify(data,['name','sex'],'\t');
console.log(str_json);

一般情况下用不上,除了可以用于导出这些数据,保存本地查看方便。

最后附上js的代码,使用node就可以运行这个js

var data =[
{name: "程咬金",sex:"1",age:26
},
{name: "程才",sex:"0",age:20
},
{name: "程新松",sex:"1",age:22
},
{name: "程功",sex:"1",age:18
}
];
/*日常用法*/
//console.log(data,'数组');
//var str_json = JSON.stringify(data);
//console.log(str_json,'字符串');/*提取用户名和性别-方法1*/
//for(var i=0,new_data=[];i<data.length;i++){
//    new_data.push({
//        name: data[i].name,
//        sex: data[i].sex
//    });
//}
//var str_json = JSON.stringify(new_data);
//console.log(str_json);
/*提取用户名和性别-方法2*/
//var str_json = JSON.stringify(data,["name","sex"]);
//console.log(str_json);/*回调函数做一个映射关系*/
var str_json = JSON.stringify(data,function(key,value){if(key == 'sex'){return ['女','男'][value];/*该处注释等价于return ['女','男'][value];*/
//        if(value == 0 ){
//            value = '女';
//        }else{
//            value = '男';
//        }}return value;
});
console.log(str_json);/*格式化字符串*/
//var str_json = JSON.stringify(data,null,'\t');
//console.log(str_json);
//var str_json = JSON.stringify(data,['name','sex'],'\t');
//console.log(str_json);

注意:

1、JSON.stringify会自动把所要转换内容中的汉字转换为Unicode编码
2、浏览器间有差别,个别浏览器会把将要提交表单内容中的Unicode编码自动转为汉字(Chrome自动转换,IE不转)

Json.stringify()的用法相关推荐

  1. 理解JSON.stringify()高级用法

    一:JSON.stringify() 该方法是把javascript对象转换成json字符串. 基本语法:JSON.stringify(value, [, replacer], [, space]) ...

  2. JSON.parse和JSON.stringify的用法

    平时我们在接收后端返回的json对象通常是一个字符串类型的object,所以一般我们要对这个object进行类型转化后,我们才能使用object里面的数据,而这其中涉及到两个必不可少的方法就是JSON ...

  3. 前端 JavaScript 中 JSON.stringify() 的基本用法

    前言 在开发工作中,我们可能会碰到这样的需求:需要将某个对象内容弹窗显示或者保存在文件中,这时候如果你直接弹窗的话,很可能就是下面这样的: 因为很多接口它对参数有要求,比如只能是字符串之类的. 这时候 ...

  4. 关于JSON.stringify()的用法

    写页面的时候一直没整明白为什么吗对象格式的要通过JSON.stringify()这个方法转一下有什么好处,最近看其它的博客get到一些实用的技巧 第一种:在数组中提取数据 var data = [{n ...

  5. $.each 循环json以及JSON.parse() JSON.stringify() jQuery.parseJSON()的用法:

    $.each 循环 json 当循环的是 json 对象: var jsonStu = [{"name": "张三","score": &q ...

  6. JSON.parse()、eval()、JSON.stringify()、jQuery.parseJSON()的用法

    一: JSON数据的两种解析方法 JSON.parse() .eval ()方法 1 :JSON.parse() : 用于将一个 JSON 字符串转换为 JavaScript 对象. var str ...

  7. 关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法

    JSON.parse(jsonString): 在一个字符串中解析出JSON对象 JSON.stringify(obj) : 将一个JSON对象转换成字符串 jQuery.parseJSON(json ...

  8. 前端需要知道的JSON.stringify的正确用法

    1.API介绍 MDN官网简介:JSON.stringify(value, replacer, space) 方法将一个 JavaScript 对象或值转换为 JSON 字符串,如果指定了一个 rep ...

  9. JSON.stringify()

    写在前边 不言而喻,JSON.stringify() 是用来将合法的JSON数据字符串化的!然而在正常的工作中我们用到的只是最基础的功能:今天我们就探索不一样的JSON.stringify(). 基础 ...

  10. JSON简介以及用法汇总

    SON简介以及用法汇总 什么是JSON? JavaScript 对象表示法(JavaScript Object Notation). JSON是一种轻量级的数据交换格式,某个JSON格式的文件内部譬如 ...

最新文章

  1. 心得丨从0到1,教你如何利用大学四年无师自通,学好机器学习!
  2. [转]在.NET环境中实现每日构建(Daily Build)--NAnt篇
  3. linux部署vue项目_Vue项目部署的最佳实践
  4. Maven 3-Maven依赖版本冲突的分析及解决小结
  5. RAILS 学习日记 --扩展
  6. c语言有语段不运行,各位C语言的高手,帮忙看下下面两段代码!他们不能运行!急!!!!!!...
  7. lucene Term查询
  8. C语言fscanf和fprintf函数的用法详解
  9. 代码意识流——花朵数问题(七)
  10. Sharepoint学习笔记—Ribbon系列-- 2. 在Ribbon中添加新Tab
  11. springboot与dubbo整合
  12. mysql split 分割文件名_【原】mysql5.6 split函数_字符串的分割
  13. 人人视频android资源比ios多,人人视频
  14. 系统封装 EasyBoot如何将WIN7安装版提取到光盘
  15. 前端配置prettier工具格式化代码
  16. 实用frida进阶:内存漫游、hook anywhere、抓包
  17. 使用VirtualBox创建虚拟机
  18. python渲染光线_在python中为图像添加光照效果
  19. 14、W601之AHT10温湿度传感器
  20. 如何使用CNN进行物体识别和分类_基于CNN目标检测方法(RCNN,FastRCNN,FasterRCNN,MaskRCNN,YOLO,SSD)行人检测...

热门文章

  1. 光谱分析软件_利用Tracker软件分析车前草提取液的吸收光谱特征
  2. 创蓝253云通讯平台---短信验证码接口说明
  3. 独门秘籍 针式打印机换针小窍门
  4. 适合客厅的挂画 山水画让家活色生香
  5. 复杂网络中小世界网络的MATLAB实现
  6. R之相关性的显著性检验
  7. 法国在华企业名单,坚决抵制!
  8. The7强大多功能模板Var9.16.0+基于WordPress
  9. ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.9/main: DNS lookup error
  10. MAC下如何解压.bin文件