JSON中key动态设置及JSON.parse和JSON.stringify()的区别

JSON中key动态设置指的是在JavaScript中向JSON对象动态添加属性名(key),这样的JSON对象在另一个需要使用这些属性的函数或者方法中外部作用域仍然可以进行访问。但在正常情况下,我们无法使用字符串拼接的方式来动态设置JSON中的key,这时候就需要借助ES6中的计算属性名(Computed Property Names)来实现。

计算属性名的语法是在对象属性名的方括号中使用一个表达式来为对象动态添加属性名。例如:

let dynamicKey = 'key';
let obj = {
  [dynamicKey]: 'value'
};

console.log(obj); // { key: "value" }

以上代码中,dynamicKey变量是一个动态的属性名,使用方括号包裹起来,并且动态设置了键名为dynamicKey变量的值为字符串"value"的属性。执行console.log(obj)可以看到obj动态添加了一个属性,它的key是动态的,为dynamicKey的变量值,value是固定的字符串"value"。

JSON.parse和JSON.stringify()的作用是可以将JavaScript对象转化为JSON字符串字符串和将JSON字符串转化为JavaScript对象。JSON.parse方法将JSON字符串解析为JavaScript对象,而JSON.stringify方法则将JavaScript对象转换成JSON字符串。

在使用这两个方法时需要注意以下几点:

  1. JSON.parse()方法会将JSON字符串转换成JavaScript对象,但是字符串必须是严格规范的JSON格式,否则会抛出错误。
  2. JSON.stringify()方法将JavaScript对象转换成JSON格式的字符串。该方法可以接受一个可选参数replacer,用于转换特定的属性;还有一个可选参数space,用于设置输出格式的缩进大小。
  3. JSON.parse()方法解析Json字符串得到的是JavaScript对象,而不是真正的JSON对象。
  4. JSON.stringify()方法只会返回包含数据的JSON字符串,而不包含JavaScript中的行为函数。

以下是示例代码:

完成一个artList(艺术家列表)JSON对象,其结构如下:

{
   "data": {
      "artists": [
         {
            "id": "ar1",
            "name": "Vincent van Gogh",
            "date_of_birth": "1853-03-30"
         },
         {
            "id": "ar2",
            "name": "Pablo Picasso",
            "date_of_birth": "1881-10-25"
         },
         {
            "id": "ar3",
            "name": "Claude Monet",
            "date_of_birth": "1840-11-14"
         }
      ]
   }
}

使用计算属性名动态设置一个新的艺术家信息,然后将新添加的JSON对象转化为JSON字符串。

let artistName = 'Salvador Dali';
let dateOfBirth = '1904-05-11';

let artList = {
  "data": {
    "artists": [
      {
        "id": "ar1",
        "name": "Vincent van Gogh",
        "date_of_birth": "1853-03-30"
      },
      {
        "id": "ar2",
        "name": "Pablo Picasso",
        "date_of_birth": "1881-10-25"
      },
      {
        "id": "ar3",
        "name": "Claude Monet",
        "date_of_birth": "1840-11-14"
      },
      {[`ar4`]:{
            "id": "ar4",
            "name": artistName,
            "date_of_birth": dateOfBirth
      }}
    ]
  }
};

let artListString = JSON.stringify(artList);
console.log(artListString);

以上代码中,使用计算属性名方式动态添加了一个名为ar4的新艺术家,然后将artList对象转化为字符串输出,会得到以下输出结果:

{
  "data":{
    "artists":[
      {
        "id":"ar1",
        "name":"Vincent van Gogh",
        "date_of_birth":"1853-03-30"
      },
      {
        "id":"ar2",
        "name":"Pablo Picasso",
        "date_of_birth":"1881-10-25"
      },
      {
        "id":"ar3",
        "name":"Claude Monet",
        "date_of_birth":"1840-11-14"
      },
      {
        "ar4":{
          "id":"ar4",
          "name":"Salvador Dali",
          "date_of_birth":"1904-05-11"
        }
      }
    ]
  }
}

以下是第二个示例代码:

将一个JSON字符串使用JSON.parse方法转换为JavaScript对象,并使用计算属性名将一个数据重新添加进组成新的JSON对象。

let jsonString = `{
                    "name": "Jason Bourne",
                    "birth": "1970-07-21",
                    "nationality": "American",
                    "profession": "Spy",
                    "alias": "Delta One"
                  }`;

let agentInfo = JSON.parse(jsonString);

let moreInfo = {
  "location": "Hong Kong",
  "active": true
};

agentInfo = {
  ...agentInfo,
  [Object.keys(moreInfo)[0]]: moreInfo.location,
  [Object.keys(moreInfo)[1]]: moreInfo.active
};

let outputString = JSON.stringify(agentInfo);

console.log(outputString);

以上代码中,首先使用JSON.parse方法将jsonString解析为一个JavaScript对象(agentInfo),然后使用计算属性名动态添加了包含新信息的属性(location和active),并将其拼接到agentInfo对象中生成新的JSON对象。最后使用JSON.stringify方法将新的JSON对象转化为字符串输出,会得到以下输出结果:

{
  "name": "Jason Bourne",
  "birth": "1970-07-21",
  "nationality": "American",
  "profession": "Spy",
  "alias": "Delta One",
  "location": "Hong Kong",
  "active": true
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JSON中key动态设置及JSON.parse和JSON.stringify()的区别 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript 学习笔记(十三)Dom创建表格

    以下是对“JavaScript 学习笔记(十三)Dom创建表格”的详细讲解: 什么是DOM DOM(Document Object Model)是一种表示文档结构的方式,它将整个文档看做是一个文档树形结构,树形结构中的每个节点都一个文档对象,节点可以有属性,也可以有子节点。 在Web页面中,DOM树形结构代表了页面的结构,我们可以通过JavaScript来操…

    JavaScript 2023年6月10日
    00
  • JavaScript面向对象实现贪吃蛇游戏

    JavaScript面向对象实现贪吃蛇游戏的步骤如下: 定义Snake类 Snake类表示贪吃蛇,包含以下属性: body:表示蛇身,由一个包含多个坐标的数组组成 direction:表示蛇的方向,可以取值为”up”、”down”、”left”、”right”之一 Snake类包含以下方法: move():根据方向移动蛇的位置,并更新蛇的身体 changeD…

    JavaScript 2023年6月10日
    00
  • JS简单添加元素新节点的方法示例

    下面我来详细讲解“JS简单添加元素新节点的方法示例”的完整攻略。 什么是添加新节点? 在 JavaScript 中,向 HTML 文档中添加节点(节点就是 HTML 元素)的过程称为添加新节点。 添加新节点的方法 使用 JavaScript 可以轻松地添加新节点到 HTML 页面中。下面我们来看看两个添加新节点的示例方法。 方法一:appendChild()…

    JavaScript 2023年6月10日
    00
  • 如何动态的导入js文件具体该怎么实现

    动态导入 JavaScript 文件有多种方式实现,其中比较常用的有使用 import() 方法和插入 script 标签两种方法。 使用 import() 方法 import() 方法是 ES6 引入的动态导入模块的方式,通过加载模块的 Promise 对象进行引入。可以在任意位置调用该方法,实现按需加载 JavaScript 文件,适用于较大、复杂或是异…

    JavaScript 2023年5月27日
    00
  • JavaScript高级程序设计 学习笔记 js高级技巧

    JavaScript高级程序设计 学习笔记 js高级技巧 概述 《JavaScript高级程序设计》是一本深入讲解JavaScript核心概念和高级技巧的经典著作。对于想要深入学习JavaScript的开发者来说,这本书是非常好的选择。本文将会分享我对该书学习过程的笔记和总结。 学习笔记 第一部分 基础知识 第一部分主要介绍了一些JavaScript的基础知…

    JavaScript 2023年5月18日
    00
  • JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序

    实现一个计算当年还剩多少时间的倒计时程序可以用 JavaScript 实现。下面是完整的攻略: 步骤 第一步:获取当前的时间 可以使用 Date() 函数获取当前时间。要获取到当前的年份,可以使用 getFullYear() 方法,获取到当前的月份,可以使用 getMonth() 方法(注意获取到的月份是从0开始计数的,需要加1),获取到当前的日期,可以使用…

    JavaScript 2023年5月27日
    00
  • Javascript延迟执行实现方法(setTimeout)

    下面是关于Javascript延迟执行实现方法(setTimeout)的详细讲解。 简介 JavaScript中的setTimeout()方法是用于在一定时间后执行指定的函数或一段代码。常用于实现延迟执行、定时器等功能。 语法格式 setTimeout(function, milliseconds, arg1, arg2, …); function:必需…

    JavaScript 2023年5月27日
    00
  • JavaScript暂停和继续定时器的实现方法

    JavaScript中定时器有两种类型:setInterval和setTimeout。这两种定时器的实现原理都是通过JavaScript引擎维护一个定时器队列来实现。当一个定时器到期时,会将对应的回调函数加入到待执行的任务队列中,等待JavaScript引擎进行执行。 暂停定时器 在JavaScript中暂停定时器有许多方法,以下是其中两种实现方式。 方式一…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部