java json.stringify_浅谈 JSON.stringify 方法
一、前言
最近项目中,遇到需要将对象转换成字符串进行传递,上次写过一篇文章关于json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值。当时主要是用在有时候处理字符串和json对象之间的转换,写的主要是怎么用,涉及到JSONstringify具体用法没有涉及到,有时候对于一个JSON.stringify自带的方法掌握一下,可能会对于一个问题有更快的解决方案。
二、用法实例
1、方法的定义
2、JSON.stringify提供了参数分离出自己需要的那部分数据
3、JSON.stringify提供了参数回调函数做一个映射关系
4、JSON.stringify提供了参数格式化字符串
用过JSON都知道,把一个对象通过stringify之后变成字符串,再提交给后台或者存储在storage是很常用的手段(storage是存的key,value;value只能存字符串,而不能是json对象)。
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、方法的定义
JSON.stringify ( value [, replacer] [ , space] )
参数:
(1)value:必选,要转换的值(包括所有的数据类型,通常是对象或者数组)
(2)replace:可选,用于要转换结果的函数或者数组;如果replace是数组,仅仅是转换具有该键值的成员,成员的转换顺序和键在数组中的顺序一致;如果replace是函数,会传入每一个成员的键和值,使用的是返回值而不是原始值,如果函数返回的是undefined,则排除该成员。查看了JSON2的源码,
rx_escapable.lastIndex = 0;returnrx_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
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
var str_json = JSON.stringify(data,["name","sex"]);
console.log(str_json);
第二个参数只要传入需要的keys数组,就非常轻松的处理这个
3、JSON.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
//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];
}returnvalue;
});
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
//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
//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 = '男';//}
}returnvalue;
});
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不转)
java json.stringify_浅谈 JSON.stringify 方法相关推荐
- 浅谈 JSON.stringify 方法
原文:浅谈 JSON.stringify 方法 一.前言 最近项目中,遇到需要将对象转换成字符串进行传递,上次写过一篇文章关于json字符串转换成json对象,json对象转换成字符串,值转换成字符串 ...
- java缓存同步_浅谈JSON的数据交换、缓存问题和同步问题
JSON轻量级的数据交换格式 相对于XML来说,JSON的解析速度更快,文档更小. JSON的格式 {属性名:属性值,属性名:属性值,--} 属性名的类型可以是string,number,boolea ...
- 浅谈Arrays.asList()方法的使用
浅谈Arrays.asList()方法的使用 首先,该方法是将数组转化为list.有以下几点需要注意: (1)该方法不适用于基本数据类型(byte,short,int,long,float,doubl ...
- Unity iOS打开AppStore评星页面,浅谈Application.OpenURL()方法。
http://fairwoodgame.com/blog/?p=38 Unity iOS打开AppStore评星页面,浅谈Application.OpenURL()方法. Posted in Uni ...
- python类中方法的执行顺序-浅谈Python的方法解析顺序(MRO)
方法解析顺序, Method Resolution Order 从一段代码开始 考虑下面的情况: class A(object): def foo(self): print('A.foo()') cl ...
- python方法解析顺序_浅谈Python的方法解析顺序(MRO)
方法解析顺序, Method Resolution Order 从一段代码开始 考虑下面的情况: class A(object): def foo(self): print('A.foo()') cl ...
- 猿来小课Java视频教程讲师浅谈JAVA体系结构
猿来小课Java视频教程讲师:Java体系结构中不仅定义了Java的开发编译环境,也定义了Java的运行环境.为运行Java应用程序和applet,计算机上应安装JVM和Java运行时解释器,这两个部 ...
- 中鸣循迹机器人_浅谈机器人设计方法
浅谈机器人设计方法 摘要: 机器人是人类完成智能化中非常重要的工具, 随着时代的发展, 机器 人已经在世界有了一定的发展,甚至很多国家机器人已经运用到实际的生活中 去. 而机器人的设计方法无疑是很多人 ...
- 浅谈 JSON stringify 方法
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 用过 j ...
- java的throw_浅谈Java的throw与throws
浅谈Java异常 以前虽然知道一些异常的处理,也用过一些,但是对throw和throws区别还是有不太清楚.今天用实例测试一下 异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被 ...
最新文章
- 一站式开源测试平台:MeterSphere
- 解题报告:hdu 1276 士兵队列训练问题 - 简单题
- 数据分析转软件测试,(转)性能测试用户模型(三):基础数据分析、场景数据...
- [转载]C# WinForm开发系列 - 文章索引
- viewpager fragment FragmentStatePagerAdapter数据删除后更新界面
- java 文件无法下载_无法从Java中的URL下载文件
- 以太网的分层架构_以太网矩阵(Ethernet Fabric)简介
- 01. Django基础:Django介绍
- c语言人物游戏代码大全,(c语言)游戏中由人物各种信息组成的结构体
- 20181225面试
- cisco、华为交换机常用配置对照表
- php电子邮件群发源码,php电子邮件群发源码
- Citrix PVS7.6 测试调试
- 《SLAM十四讲》7.6 三角测量 triangulation.cpp
- Java 语言中的实例初始化块 ( IIB) 详解
- Android中播放本地SD卡中歌曲须要的加入的权限
- 梦之旅游戏攻略html5,《梦之旅1:梦境》攻略
- 关于PR安装在D盘初始化时闪退,加载到optical的时候PR直接闪退
- 纳豆红曲胶囊价格作用怎么样!
- uwp 能否运行于Linux,UWP,实现跨平台的关键