码农知识堂 - 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

    欢迎大家积极讨论……

  • 相关阅读:
    使用 Python 函数callable和isinstance的意义
    【2010NOIP普及组】T4. 三国游戏 试题解析
    基于SpringBoot的共享单车管理系统
    unity(WebGL) 截图拼接并保存本地,下载PDF
    08-循环神经网络实现文本情感分类
    求二叉树中最大的二叉搜索子树的头节点
    Activiti7报错:org.springframework.security.core.userdetails.UserDetailsService
    信息系统项目管理师 第四版 第2章 信息技术发展
    vue 如何调用子组件内的方法
    微信核酸检测预约小程序系统毕业设计毕设(4)开题报告
  • 原文地址:https://blog.csdn.net/qq_41929578/article/details/124978567
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号