首页 >> 大全

String------JSON.parse的伙伴JSON.stringify

2023-09-14 大全 25 作者:考证青年

说之前这里声明一个大的但是比较细节的问题(导致类型转换了)

如果对于字符串类型的数字,比如接口入参需要的身份证号、超长的申请号、超长的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": "外高桥保仓专项"}
]

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了