首页 > web前端 > js教程 > 正文

javascript的JSON如何解析_parse和stringify方法怎么用?

狼影
发布: 2025-12-14 17:06:08
原创
878人浏览过
JSON.parse()将合法JSON字符串转为JS值,JSON.stringify()将JS值转为JSON字符串;二者均不支持函数、undefined、Symbol等,且需注意日期、正则等特殊对象的序列化限制。

javascript的json如何解析_parse和stringify方法怎么用?

JSON.parse() 和 JSON.stringify() 是 JavaScript 中处理 JSON 数据最核心的两个方法,一个负责“读”,一个负责“写”。它们不复杂,但细节容易忽略,用错会直接报错或得到意外结果。

JSON.parse():把字符串变成对象

它只接受合法的 JSON 字符串(注意:必须是双引号,不能是单引号;不能有尾逗号;不能包含 undefined、函数、Symbol 等非法值)。

  • 基础用法:直接传入字符串,返回对应 JS 值 —— 可能是对象、数组、数字、布尔值或 null

JSON.parse('{"name":"张三","age":25}') // {name: "张三", age: 25}

JSON.parse('true') // true

立即学习Java免费学习笔记(深入)”;

JSON.parse('[1,2,3]') // [1, 2, 3]

  • 带 reviver 函数:第二个参数是个回调,会在解析过程中对每个键值对执行,可用于数据清洗或类型转换

JSON.parse('{"age":25}', (key, value) => key === 'age' ? String(value) : value) // {age: "25"}

JSON.stringify():把对象变成字符串

它能把大多数 JS 值转成标准 JSON 字符串,但有明确限制 —— 函数、undefined、Symbol、NaN、Infinity 会被忽略或转为 null;循环引用直接报错。

  • 基础用法:传入对象/数组/基本类型,返回字符串

JSON.stringify({name: '李四', city: '上海'}) // '{"name":"李四","city":"上海"}'

  • 第二个参数 replacer:可以是数组(指定要保留的属性名),也可以是函数(类似 parse 的 reviver,用于过滤或改写)
  • 第三个参数 space:控制缩进,让输出更易读,比如传 2 或 '\t'

JSON.stringify({a: 1, b: 2}, null, 2)
// 输出带缩进的格式化字符串

常见坑和注意事项

这两个方法不是万能的“深拷贝工具”,也不是任意对象都能进出的管道。

  • Date 对象会被转成 ISO 字符串,再 parse 回来就只是字符串,不再是 Date 实例
  • 正则、Map、Set、Promise 等原生对象无法被原样 stringified,需手动处理
  • 数组里有 undefined、函数、Symbol:stringify 后对应位置变成 null(数组)或被跳过(对象)
  • 解析失败时抛 SyntaxError,建议用 try/catch 包裹 JSON.parse()

典型使用场景

它们最常出现在这些地方:

  • 后端通信:fetch/post 请求体用 stringify,响应体用 parse
  • 本地存储:localStorage 只支持字符串,存对象前 stringify,取出来后 parse
  • 调试输出:用 stringify(obj, null, 2) 格式化打印嵌套结构
  • 简单深拷贝(仅限纯数据对象):JSON.parse(JSON.stringify(obj))

基本上就这些。记牢“parse 是进,stringify 是出”,再留意下哪些值不支持,就能避开大部分问题。

以上就是javascript的JSON如何解析_parse和stringify方法怎么用?的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号