JSON.stringify的应用说明

打印 上一主题 下一主题

主题 1887|帖子 1887|积分 5661

媒介

JSON.stringify() 方法将 JavaScript 对象转换为字符串,在一样平常开发中较常用,但JSON.stringify实在有三个参数,后两个参数,使用较少,今天来先容一下后两个参数的使用场景和示例。
语法及参数说明

JSON.stringify():将 JavaScript 对象或数组转换为字符串。
语法

JSON.stringify(value[, replacer[, space]])
参数说明:



  • value:
    必需, 要转换的 JavaScript 值(通常为对象或数组)。
  • replacer:
    可选。用于转换效果的函数或数组。
    如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:“”。
    如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时,将忽略 replacer 数组。
  • space:
    可选,文本添加缩进、空格和换行符。如果是数字,则表示每个级别的缩进空格数。space 也可以使用非数字,如:\t、\n、\r。
使用示例



  • JavaScript 对象转换,space参数的使用
  1. const obj = {
  2.   name: "Runoob",
  3.   price: 10000,
  4.   suport: "China",
  5. };
  6. console.log("默认转换", JSON.stringify(obj));
  7. console.log("空格缩进", JSON.stringify(obj, null, 4));
  8. console.log("/t缩进", JSON.stringify(obj, null, "\t"));
  9. console.log("/n缩进", JSON.stringify(obj, null, "\n"));
  10. console.log("/r缩进", JSON.stringify(obj, null, "\r"));
复制代码
输出效果:



  • repalce参数的使用
JSON 不允许包含函数,JSON.stringify() 会删除 JavaScript 对象的函数,包罗 key 和 value。
如果需要保留函数,可以使用 replacer 函数。如果要保留对象中的函数,可以在执行 JSON.stringify() 函数前将函数转换为字符串来制止被删除。
  1. var obj2 = {
  2.   name: "Runoob",
  3.   alexa: function () {
  4.     return 10000;
  5.   },
  6.   suport: "China",
  7. };
  8. console.log("默认转换", JSON.stringify(obj2));
复制代码
输出效果: {"name":"Runoob","suport":"China"}
从效果中可以看到,javascript中的函数被主动删除了,如果我们要保留,可以使用第二个参数replace来处置惩罚。
  1. var obj2 = {
  2.   name: "Runoob",
  3.   alexa: function () {
  4.     return 10000;
  5.   },
  6.   suport: "China",
  7. };
  8. //使用第二个参数,处理function函数
  9. var toJsonStr = JSON.stringify(obj2, (key, value) => {
  10.   if (typeof value === "function") {
  11.     return value.toString();
  12.   }
  13.   return value;
  14. });
  15. console.log("使用replacer函数转字符串", toJsonStr);
  16. //{"name":"Runoob","alexa":"function() {\n        return 1e4;\n      }","suport":"China"}
  17. // 将JSON字符串转换为JavaScript对象
  18. let toObj = JSON.parse(toJsonStr);
  19. // 转换为函数,此处也可以使用函数处理
  20. toObj.alexa = eval("(" + toObj.alexa + ")");
  21. console.log("log内容toObj.alexa()", toObj.alexa()); //10000
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美食家大橙子

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表