JavaScript JSON 和对象怎么转换

你有没有遇到过这种情况:想把手机里的通讯录名单整理成一份可分享的表格,却因为格式太乱没法直接发出去?或者想把电脑里的零散照片打包成一个压缩包,方便朋友下载?在编程里,也有类似的“打包、拆分”需求,而JavaScript里的对象和JSON,就是一对专门做这件事的好搭档。

先搞懂:对象和JSON是什么

先说说编程里的“对象”。你可以把它想象成一个带抽屉的小柜子,每个抽屉上贴了标签(比如“姓名”“年龄”),抽屉里放着对应的东西(比如“张三”“25”)。比如写一个存储用户信息的对象:

JavaScript JSON 和对象怎么转换

`javascript

const user = {

name: "张三",

age: 25,

isStudent: false

};

`

这个小柜子里的东西是“活”的,你可以随时拉开抽屉改内容——比如把年龄改成26,或者加个“地址”的新抽屉。

那JSON是什么?它是一种通用的“打包格式”,就像把小柜子里的东西按固定规则打包成一个密封的信封,信封上的标签和内容都得是标准格式,不能乱加自己的符号。比如上面的用户信息,打包成JSON就是:

`json

{"name":"张三","age":25,"isStudent":false}

`

这个信封是“死”的,里面的内容没法直接改,而且只能用双引号,不能写注释,也不能有多余的空格,就像你给朋友寄快递得按快递单规则填一样。

把对象转成JSON:用JSON.stringify()

什么时候需要把对象转成JSON?比如你要把用户信息发给后端服务器,或者存到浏览器的本地缓存里——服务器和缓存只能接收这种标准格式的“信封”,不能接收编程里的“小柜子”。这时候就用JSON.stringify()方法。

举个生活化的例子:你把自己的玩具收纳盒(对象)整理成一个标准的礼品盒(JSON),方便寄给远方的亲戚。刚才的user对象,转成JSON只需要一行代码:

`javascript

const userJson = JSON.stringify(user);

console.log(userJson);

// 输出:{"name":"张三","age":25,"isStudent":false}

`

这里有个小坑要注意:如果对象里有函数、日期对象这类特殊东西,转成JSON会直接丢失——比如加个sayHi: function() { alert("你好") },转成JSON后这个函数就没了,因为JSON只存普通数据,不存“动作”。

把JSON转成对象:用JSON.parse()

反过来,如果别人给你寄了一个标准的礼品盒(JSON),你要把它拆开变成自己能随便拿取的收纳盒(对象),就用JSON.parse()方法。这也是前端开发最常用的操作之一,比如你从缓存里取出之前存的用户JSON,要改成新的名字,就得先转成对象。

继续用刚才的例子:你收到亲戚寄来的礼品盒(userJson),要把它变回可修改的收纳盒:

`javascript

const newUser = JSON.parse(userJson);

console.log(newUser.name); // 输出:张三

newUser.age = 26; // 现在可以随便改年龄了

`

如果收到的JSON格式不对——比如漏了双引号,或者加了中文的引号,这个方法就会报错,就像你收到一个拆不开的、填错地址的快递,得先检查格式对不对。

日常开发里的真实场景

为什么要频繁做这两个转换?举两个你可能遇到的例子:

  • 刷短视频时,点赞后的状态会存在浏览器缓存里,前端会把用户的点赞信息(对象)转成JSON存起来;下次打开视频时,再把JSON转成对象,就能直接显示你之前的点赞状态。
  • 网购提交订单时,你选的商品信息会打包成JSON发给后端,后端收到后转成自己的对象处理订单,再返回结果给你。

只要记住:对象是“可修改的收纳盒”,JSON是“通用的密封信封”,转换的工具就是stringify和parse,就能轻松搞定日常开发里的这类需求了。

上一篇 Swift语言的核心特性与应用场景 一文带你快速掌握iOS开发必备技能