5、JSON.parse()

2023-10-27

JSON.parse()

JSON 通常用于与服务端交换数据。

在接收服务器数据时一般是字符串。

我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。

语法

JSON.parse(text[, reviver])

参数说明:

  • text:必需, 一个有效的 JSON 字符串。
  • reviver: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。

JSON 解析实例

例如我们从服务器接收了以下数据:

{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }

我们使用 JSON.parse() 方法处理以上数据,将其转换为 JavaScript 对象:

var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');

解析前要确保你的数据是标准的 JSON 格式,否则会解析出错。

你可以使用我们的在线工具检测:https://c.runoob.com/front-end/53

解析完成后,我们就可以在网页上使用 JSON 数据了:

<p id="demo"></p>
 
<script>
var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');
document.getElementById("demo").innerHTML = obj.name + ":" + obj.site;
</script>

从服务端接收 JSON 数据

我们可以使用 AJAX 从服务器请求 JSON 数据,并解析为 JavaScript 对象。

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myObj = JSON.parse(this.responseText);
        document.getElementById("demo").innerHTML = myObj.name;
    }
};
xmlhttp.open("GET", "/try/ajax/json_demo.txt", true);
xmlhttp.send();

从服务端接收数组的 JSON 数据

如果从服务端接收的是数组的 JSON 数据,则 JSON.parse 会将其转换为 JavaScript 数组:

实例:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myArr = JSON.parse(this.responseText);
        document.getElementById("demo").innerHTML = myArr[1];
    }
};
xmlhttp.open("GET", "/try/ajax/json_demo_array.txt", true);
xmlhttp.send();

异常

解析数据

JSON 不能存储 Date 对象。

如果你需要存储 Date 对象,需要将其转换为字符串。

之后再将字符串转换为 Date 对象。

var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}';
var obj = JSON.parse(text);
obj.initDate = new Date(obj.initDate);
 
document.getElementById("demo").innerHTML = obj.name + "创建日期: " + obj.initDate;

我们可以启用 JSON.parse 的第二个参数 reviver,一个转换结果的函数,对象的每个成员调用此函数。

var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}';
var obj = JSON.parse(text, function (key, value) {
    if (key == "initDate") {
        return new Date(value);
    } else {
        return value;
}});
 
document.getElementById("demo").innerHTML = obj.name + "创建日期:" + obj.initDate;

解析函数

JSON 不允许包含函数,但你可以将函数作为字符串存储,之后再将字符串转换为函数。

var text = '{ "name":"Runoob", "alexa":"function () {return 10000;}", "site":"www.runoob.com"}';
var obj = JSON.parse(text);
obj.alexa = eval("(" + obj.alexa + ")");
 
document.getElementById("demo").innerHTML = obj.name + " Alexa 排名:" + obj.alexa();

不建议在 JSON 中使用函数。

浏览器支持

主流浏览器都支持 JSON.parse() 函数:

  • Firefox 3.5
  • Internet Explorer 8
  • Chrome
  • Opera 10
  • Safari 4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

5、JSON.parse() 的相关文章

  • idm下载视频

    idm下载视频 安装后 地址为 链接 下载地址 提取码 fgzv 安装后 设置浏览器插件 完成 参考文章
  • CentOS下安装yum

    0 首先檢查yum有沒有安裝 yum v yum update 如果有安裝的話 可直接用更新命令操作 在Linux里面依次输入下面的命令 1 下载最新的yum 3 2 28 tar gz并解压 wget http yum baseurl o
  • c语言------字符数组和字符串的关系

    1 字符数组和字符串的定义 字符数组 指用来存放字符的数组 字符数组的定义 用来存放字符量的数组称为字符数组 其定义 的一般形式是 char数组名 数据长度 字符数组用于存放字符或字符串 字符数组中的 一个元素存放一个字符 它在内存中占用两
  • 笔试题1:int类型的取值范围是什么?

    笔试题1 int类型的取值范围是什么 Java中int类型采用4个字节 一共32位 第一位用于正负号表示 因此其取值范围 231 231 1
  • Latex的使用技巧

    0 引用 Latex公式放符号正下方 Latex中实现表格和图片的跨栏显示 LATEX之图片位置 常用数学符号的 LaTeX 表示方法 算法简单示例 overleaf 参考文献中URL过长 关于插入图片的基础知识 Latex中的长度信息 算
  • 类模板、函数模板以及类成员函数在类外定义情况

    1函数模板的写法 函数模板的一般形式如下 Template
  • Shuffle 操作

    在spark中的主要操作 触发一个叫作shuffle的事件 shuffle是spark对于重新分布数据的机制 因此数据 能在partitions上进行不同的分组 Shuffle包含在executors和machines上的数据复制 使得 s
  • Maven下载

    1 访问Maven官网Maven Welcome to Apache Mavenhttps maven apache org 2 单击 DownLoad 出现以下界面 3 点击 apache maven 3 8 6 bin zip 链接 下
  • error C2061: syntax error : identifier 'SHFILEINFOW' // 无法解析的外部符号 wWinMain,该符号在函数 WinMainCRTStartup

    1 gt StdAfx cpp 1 gt E Program Files Windows CE Tools wce600 DbAu13xx include MIPSII shellapi h 321 error C2061 syntax e
  • 接口处理请求时间过长,前台响应“服务器超时”的解决办法

    数据计算量过大 接口响应时间过长时 网关会报超时 页面就挂了 没有很好的解决办法 所以采用了如下解决办法 1 将原本的一个接口拆分为3个 三个接口异步操作 三个接口作用及描述如下 接口1 获取本地异步操作的唯一标识 唯一且加密后的code值
  • app php与html5,uniapp与HTML的区别是什么

    区别 1 uniapp是一个框架 而HTML是一种标记语言 2 组件 标签有差异 例p改成view span font改成text a改成navigator img改成image 3 uniapp不支持dom操作 HTML支持 本教程操作环
  • [2023.7.17]7 CPU Front-End Optimizations

    CPU前端 FE 组件在第3 8 1节中进行了讨论 大多数情况下 CPU FE的低效率可以描述为后端等待执行指令 但FE无法提供指令的情况 结果是 在没有执行任何实际有用工作的情况下浪费了CPU周期 由于现代处理器是4宽度 即 它们每个周期
  • 【汤圆名叫“小刺猬”和“雪化了”】——吃另类汤圆 听奇特民俗

    听奇特民俗 TITLE 汤圆名叫鈥溞 题澓外溠 蒜潯库斺敵粤砝嗵涝 听奇特民俗 gt 把汤圆微出创意来 吃另类汤圆听奇特民俗感世界之大无奇不有 叹那些正在消失的民俗 我挺懒的 而且又不是那么爱吃汤圆 减肥 所以就没有那么勤快来DIY 但节总
  • python字符串与数字类型转换

    str与int i 10 s str i s 10 s 1 i int s i 1 str与float st 4 t float st t 0 4 st 0 4 t float st t 0 4 t 0 4 st str t st 0 4
  • libevent (一) socket属性设置与初始化操作

    socket属性设置与初始化操作 libevent是一个事件触发的网络库 适用于windows linux bsd等多种平台 内部使用select epoll kqueue等系统调用管理事件机制 著名分布式缓存软件memcached也是li

随机推荐

  • 小程序怎么搭建?学会这些技巧,开启创业之路

    随着移动互联网的发展 小程序成为了一种重要的创业工具 小程序具有开发周期短 运营成本低 用户体验好等特点 被越来越多的企业和个人用来实现商业价值 本文将通过一个案例来介绍小程序的搭建技巧 帮助创业者更好地开启创业之路 案例介绍 某家生鲜电商
  • CentOS下安装配置Phabricator

    1 下载快捷安装sh http download csdn net detail u012547633 9882697 把centos版的phabricator安装脚本下载到opt目录并安装 cd opt chmod 777 install
  • java版本号分段比较_版本号判断,例如:1.0.0比较1.0.1

    有的时候可能会判断客户端的版本号信息 多位数的版本号判断做个记录 代码分享者 zzp 注意 Java中应该吧分割的正则使用 来分割小数点字符串 分割 NSArray curVerArr currentVersion componentsSe
  • 了解Chat GPT

    CHATGPT是一款强大的人工智能语言模型 可以回答任何问题和开启有趣的对话 以下是一些使用CHATGPT的技巧和提示 提问明确 CHATGPT能够回答任何问题 但它需要清晰和明确的问题来给出准确的答案 因此 在提问时要尽可能明确和具体 尝
  • 【JDBC】-- Java连接数据库方法(Mysql8+idea)

    Java Database Connectivity 简称JDBC 是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口 提供了诸如查询和更新数据库中数据的方法 Java如何连接数据库 下面使用Mysql8版本 编译器使用ide
  • Flink_CDC搭建及简单使用

    Flink CDC搭建及简单使用 1 CDC简介 CDC Change Data Capture 在广义的概念上 只要能捕获数据变更的技术 都可以称为 CDC 但通常我们说的CDC 技术主要面向数据库 包括常见的mysql Oracle M
  • Dubbo-admin 新版本启动问题记录

    Dubbo admin 新版本启动问题记录 文章目录 Dubbo admin 新版本启动问题记录 1 安装步骤 a 下载zookeeper b 下载并编译dubbo 2 总结 1 安装步骤 直接按照官网下载下来的软件 并按照说明安装软件会存
  • Vagrant虚拟机安装,磁盘扩容以及局域网内访问教程

    1 下载vagrant以及virtualBox 配上vagrant virtualBox线上下载地址 vagrant下载地址 virtualBox下载地址 2 开始准备安装镜像文件 找到需要安装的系统镜像文件 配上vagrant镜像地址 v
  • Linux strace 命令 说明

    Strace是Linux中一个调试和跟踪工具 它可以接管被跟踪进程执行的系统调用和收到的信号 然后把每一个执行的系统调用的名字 参数和返回值打印出来 可以通过strace找到问题出现在user层还是kernel层 strace 显示这些调用
  • 集群基础3——haproxy负载均衡apache

    文章目录 一 环境说明 二 安装配置httpd 三 安装配置haproxy 四 验证http负载均衡 五 配置https负载均衡 六 haproxy网页监控 6 1 监控参数详解 6 2 页面操作 一 环境说明 使用haproxy对apac
  • jmeter中body data使用post请求的json格式提交

    之前介绍过jmeter中post的默认提交形式form表达提交 Content type application x www form urlencoded 使用直接 填写参数的形式 本次介绍的是jmeter中body data使用也就是j
  • 学历和工作年限决定了程序员的工资水平吗?

    根据中国互联网络信息中心 CNNIC 近日发布的第 45 次 中国互联网络发展状况统计报告 可知 截至 2020 年 03 月 中国网民规模为 9 04 亿 较 2018 年底增加 7508 万 其中农村网民规模达 2 55 亿 占网民整体
  • 时序预测

    时序预测 MATLAB实现SVM 支持向量机 时间序列多步预测 目录 时序预测 MATLAB实现SVM 支持向量机 时间序列多步预测 预测效果 模型描述 程序设计 学习总结 参考资料 预测效果 模型描述 Options 可用的选项即表示的涵
  • maven环境快速搭建

    最近 开发中要用到maven 所以对maven进行了简单的学习 因为有个maven高手在身边 所以 很快就上手了 我这里算是自我总结吧 关于maven是什么东东 请参考其它文章 准备工作 Jdk 1 5以上java开发环境 Eclipse
  • 图解TCP/IP

    第1章 网络基础知识 本章总结了深入理解TCP IP所必备的基础知识 其中包括计算机与网络发展的历史及其标准化过程 OSI参考模型 网络概念的本质 网络构建的设备等 1 5 4 OSI参考模型中各个分层的作用 应用层 为应用程序提供服务并规
  • Python爬虫入门6:模拟浏览器访问网页的http报文体压缩传输

    前往老猿Python博客 https blog csdn net LaoYuanPython 一 引言 在前面章节中介绍了使用urllib包的request模块访问网页的方法 但上节特别说明http报文头Accept Encoding最好不
  • pytorch和tensorflow有什么区别?

    PyTorch 是一种用于构建深度学习模型的功能完备框架 同时tensorflow也是常用的框架之一 大家在学习的时候 尝尝会用来做比较 那么pytorch和tensorflow有什么区别 大家所关心的问题 解答来了 pytorch和ten
  • vue拖拽实现

    拖拽介绍 目标是将左侧list中的item拖入右侧card中 如下所示 将list1和list3拖入右侧拖拽区 一 拖拽样式实现 使用vue vuetifyjs实现 页面布局可根据不同的UI库自行修改 html内容
  • C++消消乐

    键盘版 include
  • 5、JSON.parse()

    JSON parse JSON 通常用于与服务端交换数据 在接收服务器数据时一般是字符串 我们可以使用 JSON parse 方法将数据转换为 JavaScript 对象 语法 JSON parse text reviver 参数说明 te