String------JSON.parse的伙伴JSON.stringify
说之前这里声明一个大的但是比较细节的问题(导致类型转换了)
如果对于字符串类型的数字,比如接口入参需要的身份证号、超长的申请号、超长的id编号
如果用了JSON.stringify这里不影响取值,最关键在于取值,
一般人可能都会用成对出现的JSON.parse来包裹下去拿。
此时就会出现类型转换的问题了,原本正常的字符串类型的数字变成了数字
而且是错误的数字,因为数学上对于超长的数字会有省略或者转换,尤其是最前面是000的
会直接省略掉,导致接口入参变掉,最终无从查询问题根源
所以这里请小伙伴们特别注意封装全局方法是一定要判断完善哦
JSON. ( value [, ] [ , space] ) :后两个参数为可选参数,下面会介绍
将 值转换为 对象表示法 (Json) 字符串。注意:value中的方法不会转换成字符串,仅转换各种值类型和数组。
参数说明:JSON.的三个参数 - - 博客园
value
space
\t :表示空四个字符,也称缩进,相当于按一下Tab键
var arr = ["hunter","children", "age"];ret =JSON.stringify(arr, null, '\t'); 第三个参数表示跳到下一个制表位,空格数为tab的位数(4)
ret =JSON.stringify(arr, array1, 3); 第三个参数表示每行空的字符位数(可以是1~n数字 n> 10按十个字符,即最大为10个字符)打印结果:
"["hunter","children","age"
]"针对replacer参数为数组的情况:注意前面是数组该参数为数组会被忽略掉~
var data = {name:"niuzai",info:{age:18,sex:"male"}
};
================================================
JSON.stringify(data,['name','info','age'],'\t')
"{"name": "niuzai","info": {"age": 18 // 这里数组未含有sex则返回时会忽略掉它~~~~~~~}
}"注意:
字符串值以引号开始和结束。 所有 Unicode字符可括在引号中,
但必须使用反斜杠进行转义的字符除外。 以下字符的前面必须是反斜杠:引号 (") \"反斜杠 (\) \\退格键 (b) \b换页符 (f) \f换行符 (n) \n回车符 (r) \r水平制表符 (t) \t四个十六进制数字(uhhhh)
实际例子来说明:
let temp = [{"todoId": "2001196Y9RF0S32W","projectName": "外高桥保仓专项","dayId": "2001196Y9RDG3Z9P","todoTypeCode": 1,"todoType": "项目承接","remark": "2","content": "1","startTime": 1579398180000,"endTime": 1579401840000,"actualStartTime": 1579412495000,"actualEndTime": null,"suspendCount": 0,"workHours": null,"actualWorkHours": null,"todoState": "进行中","todoStateCode": 2,"todoWorkTimeoutList": [{"timeoutId": "2001199RN24BKZ54","timeoutStartTime": "2020-01-19 13:41:44","timeoutEndTime": "2020-01-19 13:41:45","timeoutRemark": "测试"}]},{"todoId": "2001199RHPNPDP00","projectName": "外高桥保仓专项","dayId": "2001196Y9RDG3Z9P","todoTypeCode": 7,"todoType": "数据整理","remark": "23","content": "2","startTime": 1579412478000,"endTime": 1579430475000,"actualStartTime": null,"actualEndTime": null,"suspendCount": 0,"workHours": null,"actualWorkHours": null,"todoState": "未开始","todoStateCode": 1,"todoWorkTimeoutList": []}
]let arr = ['todoId', 'dayId', 'projectName']; // json数据会被过滤出来的字段;执行代码: JSON.stringify(temp, arr, 2) 打印结果:
[{"todoId": "2001196Y9RF0S32W","dayId": "2001196Y9RDG3Z9P","projectName": "外高桥保仓专项"},{"todoId": "2001199RHPNPDP00","dayId": "2001196Y9RDG3Z9P","projectName": "外高桥保仓专项"}
]