当前位置: 首页 > article >正文

JSON-stringify和parse

目录

JSON序列化

 JSON反序列化

序列化和反序列化转换 

深拷贝 

JSON.parse接受参数类型错误导致抛出异常 

 当有子元素的时候,设置父元素样式的方式

 防抖问题


JSON序列化

    const obj = {
      name: "John",
      age: 30,
      city: "New York",
    };

    // 基本用法,将对象转换为 JSON 字符串
    const jsonString = JSON.stringify(obj);
    console.log(jsonString);

    // 使用 replacer 函数进行自定义转换
    const replacer = (key, value) => {
      if (typeof value === "number" && value > 25) {
        return value + 1;
      }
      return value;
    };
    const jsonStringWithReplacer = JSON.stringify(obj, replacer);
    console.log(jsonStringWithReplacer);

    // 使用 space 参数来控制缩进
    const jsonStringWithIndentation = JSON.stringify(obj, null, 4);
    console.log(jsonStringWithIndentation);


    obj.toJSON=function(){
        return {
            fullName:this.name,
            yearsOld:this.age,
            location:this.city
        }
    }

    const jsonString1= JSON.stringify(obj);
    console.log(jsonString1);

 JSON反序列化

    // 假设我们有一个JSON格式的字符串
    const jsonString =
      '{"name": "Alice", "age": 25, "isStudent": true, "courses": ["Math", "Science"], "address": {"city": "New York", "zip": "10001"}}';

    // 使用JSON.parse将JSON字符串反序列化为JavaScript对象
    const parsedObject = JSON.parse(jsonString, (key, value) => {
      console.log(`Key: ${key}, Value: ${value}`);
      // 如果值是字符串类型,并且可以转换为数字,则将其转换为数字
      if (typeof value === "string" && !isNaN(value)) {
        return Number(value);
      }
      // 返回原始值
      return value;
    });

    // 输出反序列化后的对象
    console.log(parsedObject);

序列化和反序列化转换 

    // 定义一个对象
    const person = {
      name: "Alice",
      age: 25,
      hobbies: ["reading", "swimming"],
    };

    // 将对象序列化为 JSON 字符串
    const jsonString = JSON.stringify(person);

    // 使用 JSON.parse() 进行反序列化
    const deserializedPerson = JSON.parse(jsonString);

    // 打印原始对象、JSON 字符串和反序列化后的对象
    console.log("原始对象:", person);
    console.log("JSON 字符串:", jsonString);
    console.log("反序列化后的对象:", deserializedPerson);

深拷贝 

    const obj = {
      name: "John",
      age: 30,
      address: {
        street: "123 Main St",
        city: "New York",
        state: "NY",
      },
    };

    const deepCopy = JSON.parse(JSON.stringify(obj));

    // 修改原始对象
    obj.name = "Jane";
    obj.address.city = "Los Angeles";

    // 打印原始对象和深拷贝对象
    console.log("原始对象:", obj);
    console.log("深拷贝对象:", deepCopy);

JSON.parse接受参数类型错误导致抛出异常 

export const filterLockAndNoExistList = (oldParam: string, authInfo: AuthInfo): string => {
    if (isNil(oldParam) || isNil(authInfo)) return '';
    const oldParamArray = oldParam?.split(',') || [];
    // lockList为大整型的数组,用BigInt解决精度损失问题
    const lockList = JSON.parse(authInfo?.lockList || '[]').map((i: number) => BigInt(i)+'');
    const noExistList = JSON.parse(authInfo?.noExistList || '[]').map((i: number) => BigInt(i)+'');
    // 过滤掉存在于 lockList 或 noExistList 中的元素
    const filteredArray = oldParamArray.filter(id =>
        !lockList.includes(id) && !noExistList.includes(id)
    );
    return filteredArray.join(',');
};
    const lockList = (Array.isArray(authInfo?.lockList) ? authInfo.lockList : JSON.parse(authInfo?.lockList || '[]'))
    .map((i: number) => BigInt(i) + '');

 当有子元素的时候,设置父元素样式的方式

.poppy-spin-container {
  // 默认样式
  min-width: 200px;

  // 当子元素中存在 .bill-data-empty 时
  &:has(.bill-data-empty) {
    min-width: 300px;
  }
}

 防抖问题

 


http://www.kler.cn/a/512295.html

相关文章:

  • QLineEdit 在文本发生变更时触发事件几种方式详细说明
  • 大数据学习(36)- Hive和YARN
  • redis性能优化参考——筑梦之路
  • 学技术学英文:通过jmeter命令行工具生成聚合报告文件到csv文件
  • 力扣动态规划-2【算法学习day.96】
  • 3. 后端验证前端Token
  • 48V电气架构全面科普和解析:下一代智能电动汽车核心驱动
  • Android 空包签名(详细版)
  • AI刷题-病毒在封闭空间中的传播时间
  • 企业级流程架构设计思路-基于价值链的流程架构
  • 数据结构(二)栈/队列和二叉树/堆
  • centos虚拟机异常关闭,导致数据出现问题
  • 【2024年度个人生活与博客事业的融合与平衡总结】
  • 深入解析 C++17 中的 u8 字符字面量:提升 Unicode 处理能力
  • 大模型LLM-微调 RAG
  • Java-数据结构-二叉树习题(1)
  • AUTOSAR OS模块详解(三) Alarm
  • 我想通过python语言,学习数据结构和算法该如何入手?
  • 低代码运维与管理服务
  • 大数据学习(37)- Flink运行时架构
  • 嵌入式STM32创新教学:华清远见虚拟仿真实验平台与智能车项目师资培训
  • Zemax STAR 模块的入门设置
  • 《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》重印变更的彩插
  • Linux(Centos 7.6)命令详解:iconv
  • matlab中的griddata函数
  • element表格滚动错位问题,使用uniapp写的项目