码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 一篇文章带你了解 JSON.stringfy和JSON.parse 的用法


            相信大家对于 JSON.stringify 和 JSON.parse 一定不陌生,我们在使用本地储存的时候经常使用(存:localstorage.setItem(“key”,JSON.stringify( obj ) 取: JSON.parse(localstorage.getItem(“key”)),下面让我们看看这个方法的其他参数用法。

    目录

    • 1.JSON.stringify 方法的第一个参数——将对象转换为JSON字符串;(常用)
    • 2.JSON.stringify 方法的第二个参数——修改默认字符串;
    • 3.JSON.stringify 方法的第三个参数——增加JSON字符串可读性;
    • 4.JSON.parse 方法的第一个参数——将 JSON 字符串转换为 JSON 对象;(常用)
    • 5.JSON.parse 方法的第二个参数——与JSON.stringify相似;

    1.JSON.stringify 方法将某个对象转换成 JSON 字符串形式

    const stu = {
        name: 'zcxiaobao',
        age: 18
    }
    console.log(JSON.stringify(stu));
    //"{"name":"zcxiaobao","age":18}"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意:

    • undefined 值、函数或者XML值会被忽略;
    • 如果你的数组当中含有 undefined 值,函数或 XML 值,该数组中的这些值将会被当成 null ;
    • 常用于本地储存 localstorage.setItem(“key”,JSON.stringify( obj ),如果直接存入会变成 [object,object]。
    JSON.stringify({
        doStuff: function() { },
        doThings: [ function() {}, undefined ]
    });
    // 输出结果:  "{"doThings":[null,null]}"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.JSON.stringify 方法的第二个参数

    (1) JSON.stringify方法还可以接受一个数组参数,指定需要转成字符串的属性。
    JSON.stringify({ a:1, b:2 }, ['a'])
    // '{"a":1}'  只将属性 a 转换为字符串
    
    • 1
    • 2

    (2) JSON.stringify 方法还可以接受一个函数作为参数,用来更改默认的字符串化的行为。

    function f(key, value) {
      if (typeof value === "number") {
        value = 2 * value;
      }
      return value;
    }
    
    JSON.stringify({ a:1, b:2 ,c:'name'}, f)
    // "{"a":2,"b":4,"c":"name"}"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.JSON.stringify 方法的第三个参数

    JSON.stringify还可以接受第三个参数,用于增加返回的JSON字符串的可读性。
    • 如果是数字,表示每个属性前面添加的空格(最多不超过10个);
    • 如果是字符串(不超过10个字符),则该字符串会添加在每行前面;
    var person = {
        name: "Jim Cowart",
        location: {
            city: {
                name: "Chattanooga",
                population: 167674
            },
            state: {
                name: "Tennessee",
                abbreviation: "TN",
                population: 6403000
            }
        },
        company: "appendTo"
    };
    //如果你希望缩进量为2 个空格,
    // 你可以这么干:
    console.log(JSON.stringify(person, null, 2));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    4.JSON.parse 方法将 JSON 字符串转换为 JSON 对象

    如果传入的字符串不是有效的JSON格式,JSON.parse方法将报错。
    const stu = {
        name: 'zcxiaobao',
        age: 18
    }
    let new_stu = JSON.stringify(stu)
    //"{"name": "zcxiaobao","age": 18}"
    let old_stu = JSON.parse(new_stu)
    //{
    //  "name": "zcxiaobao",
    //  "age": 18
    //} 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    5.JSON.parse()的第二个参数

    JSON.parse方法可以接受一个处理函数,用法与JSON.stringify方法类似。
    function f(key, value) {
      if ( key === ""){
          return value;
      }
      if ( key === "a" ) {
        return value + 10;
      }
    }
    
    var o = JSON.parse('{"a":1,"b":2}', f);
    o.a // 11
    o.b // undefined
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    欢迎大家积极讨论……

  • 相关阅读:
    【BOOST C++ 12 函数式编程】(1)Boost.Phoenix库
    RPA是什么?怎么成为RPA高手?
    英伟达经济学:云服务商在GPU上每花1美元 就能赚7美元
    Netty - 回顾Netty高性能原理和框架架构解析
    gitLab批量下载有权限的项目
    [论文阅读] SADGA: Structure-Aware Dual Graph Aggregation Network for Text-to-SQL
    vivado产生报告阅读分析7-时序报告3
    Web框架开发-Form组件和ajax实现注册
    Linux--gcc/g++
    jsPDF + html2canvas A4分页截断 完美解决方案(含代码 + 案例)
  • 原文地址:https://blog.csdn.net/qq_41929578/article/details/124978567
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号