热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

八、调试JSON

八、调试JSON在过去的几年里,JSON有了突飞猛进的发展,因此有大量的免费资源来理解我们正

八、调试 JSON

在过去的几年里,JSON 有了突飞猛进的发展,因此有大量的免费资源来理解我们正在使用的 JSON 对象。正如我们前面所讨论的,JSON 可以用于多种目的,理解可能会破坏 JSON 的简单事情很重要,例如忽略双引号,或者 JSON 对象中最后一项上的尾随逗号,或者网络服务器发送的错误内容类型。在本章中,让我们回顾一下调试、验证和格式化 JSON 的不同方式。

使用开发工具

几乎所有的顶级浏览器,如 Mozilla Firefox、Google Chrome、Safari 和 Internet Explorer 都有强大的调试工具,可以帮助我们了解正在发出的请求以及正在返回的响应。JSON 可以是请求的一部分,也可以是响应的一部分。谷歌 Chrome、Safari 和更新版本的 Internet Explorer 都附带了内置的开发工具。Firebug 是一个非常流行的网络开发工具包,可用于 Mozilla Firefox。Firebug 是一个外部插件,必须安装在浏览器上;它是最早的网络开发工具包之一,旨在帮助网络开发人员使用火狐。

要安装 Firebug,请访问http://getfirebug.com/,点击登陆页面安装 Firebug

这些开发工具提供了对 HTML DOM 树的访问,并让我们实时了解 HTML 元素在页面上是如何排列的。开发人员工具附带了一个网络(或 Net )选项卡,允许我们跟踪所有资源,如图像、Javascript 文件、CSS 文件、闪存介质以及客户端正在进行的任何异步调用。控制台窗口是开发人员工具中内置的另一个流行功能。顾名思义,这个窗口为我们提供了一个运行时 Javascript 控制台来测试任何动态脚本。要在 Firefox 上启动开发人员工具,请将网页加载到网络浏览器中,然后右键单击网页;这将给我们一个选项列表,选择用萤火虫检查元素 。要在谷歌 Chrome 和 Safari 上加载开发工具,右键单击网页,然后从选项列表中单击 检查元素。在 Safari 上工作时,请记住必须启用开发人员工具;要启用开发工具,点击 Safari 菜单项,选择首选项并点击高级选项卡,勾选在菜单栏显示开发菜单查看开发工具。在互联网浏览器上,点击键盘上的 F12 键,打开开发者工具窗口。在第 4 章、使用 JSON 数据进行 AJAX 调用中,我们第一次异步调用一个实时网络服务器来使用 jQuery 请求 JSON 数据。让我们使用该程序,并使用开发工具调试数据;对于本例,我们将使用 Firefox 网络浏览器:

Using the developer tools

jquery-ajax.html

在页面加载时,当用户右键单击并选择用 Firebug 检查元素选项时, HTML 选项卡默认加载,用户可以看到 HTML DOM。在我们的例子中,我们已经将click事件处理程序绑定到了获取提要按钮。让我们看看点击按钮后的控制台输出;要在控制台窗口中查看输出,单击控制台选项卡:

Using the developer tools

一旦检索到响应,JSON 提要将被记录到控制台窗口的响应选项卡中。理解 JSON 提要以便解析它很重要,开发人员工具的控制台窗口为我们提供了一种分析 JSON 提要的简单方法。让我们继续研究开发人员工具,并访问火狐中的选项卡,了解客户端和服务器如何交流客户端期望的数据内容类型:

Using the developer tools

在网络窗口中,我们应该从点击异步调用的网址开始,异步调用正在进行到index.php。点击该链接后,在标头部分,我们应该观察 Accept 标头,该标头预期为application/json 多用途互联网邮件扩展 ( MIME )类型,而 X-Requested-With 标头为 XMLHttpRequest ,通知这是一个异步请求。“网络”窗口中的响应选项卡与控制台窗口中的 响应选项卡相同,它将显示该请求的 JSON 提要。在本书中,我们广泛使用了将数据打印到控制台窗口的console.log方法,这是开发人员工具的另一个有用的特性。

验证 JSON

类似于我们的调试资源,有很多流行的网络工具帮助我们验证我们构建的 JSON。 JSONLint 是验证我们的 JSON 提要的最流行的网络工具之一。

当我们使用服务器端程序,比如 PHP、Python 或 Java 时,内置的 JSON 编码库生成 JSON 提要,通常该提要将是一个有效的 JSON 提要。

JSONLint 有一个非常简单的接口,允许用户粘贴他们想要验证的 JSON,并根据我们粘贴的 JSON 提要返回成功消息或错误消息。让我们首先验证一个坏的 JSON 片段,以查看将返回的错误消息,然后让我们修复它以查看成功消息。对于本例,我将复制上例中的students提要,并在第二个元素的末尾添加一个尾随逗号:

Validating JSON

请注意,我们在 JSON 对象的最后一项添加了一个尾随逗号,关于 JSONLint 的最好部分是描述性错误消息。我们遇到了一个解析错误,为了简单起见,消息还给出了错误所在的行号。解析器需要一个字符串,或者一个数字,或者一个空值,或者一个布尔值,因为我们没有提供,所以我们遇到了这个错误。为了修复这个错误,我们要么必须向那个 JSON 对象添加一个新的项目来调整逗号,要么我们必须去掉逗号,因为前面没有项目。

Validating JSON

只要我们删除末尾的逗号并验证它,我们就会得到成功消息。易用性和描述性消息使 JSONLint 成为 JSON 验证的 goto 网站之一。

要使用 JSONLint,请访问http://www.jsonlint.com。

格式化 JSON

JSONLint 不仅仅是一个在线的 JSON 验证器,它还帮助我们格式化 JSON,让它看起来很漂亮。通常,JSON 提要的大小很大,而一个提供遍历 JSON 对象的树结构的在线编辑器总是有帮助的。 JSON 编辑器在线是我最喜欢的在线编辑器之一,可以处理和格式化大的 JSON 对象,因为它提供了一个简单的导航树结构。

Formatting JSON

要在线使用 JSON 编辑器,请访问http://www.jsoneditoronline.org。

我们首先将我们的 JSON 示例代码粘贴到左侧的窗口中,点击中间的右箭头按钮,生成我们的树形结构。一旦我们对树结构进行了更改,我们就可以单击左箭头按钮来格式化我们的数据,使其可以在其他地方使用。

总结

调试、验证和格式化是开发人员永远不能忽视的三件事。在这一章中,我们已经查看了一些资源,例如用于调试的浏览器的开发人员工具包,我们如何利用这些开发人员工具包,还看到了如何使用 JSONLint 进行验证,以及如何使用 JSON 编辑器 Online 进行格式化。

Javascript 和 JSON Essentials 到此结束,旨在为您提供如何以 JSON 数据格式存储和传输数据的深入见解。我们有过在同一个域内通过 HTTP 异步请求传输 JSON,以及跨域传输 HTTP 异步请求的实践经验。我们还研究了如何使用 JSON 数据格式的替代实现。这是理解 JSON 以开发交互式和响应性网络应用的漫长旅程的坚实开端。


推荐阅读
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 本文详细介绍了如何手动编写兼容IE的Ajax函数,以及探讨了跨域请求的实现方法和原理,包括JSONP和服务器端设置HTTP头部等技术。 ... [详细]
  • 使用 NDB 提升 Node.js 应用调试体验
    本文介绍了由 Google Chrome 实验室推出的新一代 Node.js 调试工具 NDB,旨在为开发者提供更加高效和便捷的调试解决方案。 ... [详细]
  • 本文深入探讨了HTML5中十五个重要的新特性,为开发者提供了详细的指南。 ... [详细]
  • 本文详细介绍了跨站脚本攻击(XSS)的基本概念、工作原理,并通过实际案例演示如何构建XSS漏洞的测试环境,以及探讨了XSS攻击的不同形式和防御策略。 ... [详细]
  • 本文介绍了如何在三台CentOS 7.5虚拟机上通过Docker部署RabbitMQ集群,包括环境准备、容器创建、集群配置及故障处理等内容。 ... [详细]
  • 本文探讨了通过数组操作、事件委托、插件化开发、字符串拼接优化、HTML5 Data属性的使用、优先采用原生JavaScript以及JavaScript文件的压缩等方法,来提升jQuery应用程序的性能。 ... [详细]
  • 本文介绍如何使用 jQuery 的 AJAX 方法从服务器获取 JSON 数据,并通过遍历这些数据来创建包含公司及其产品信息的数组。 ... [详细]
  • 本文详细介绍了C++标准模板库(STL)中各容器的功能特性,并深入探讨了不同容器操作函数的异常安全性。 ... [详细]
  • 本文详细介绍了如何在VMware环境下安装CentOS 7 Minimal,并成功配置GNOME桌面环境的过程。包括解决网络连接问题和设置默认图形界面等关键步骤。 ... [详细]
  • 手把手教你构建简易JSON解析器
    本文将带你深入了解JSON解析器的构建过程,通过实践掌握JSON解析的基本原理。适合所有对数据解析感兴趣的开发者。 ... [详细]
  • 本文深入探讨了Java注解的基本概念及其在现代Java开发中的应用。文章不仅介绍了如何创建和使用自定义注解,还详细讲解了如何利用反射机制解析注解,以及Java内建注解的使用场景。 ... [详细]
  • 本文详细介绍了RPM包构建过程中Spec文件的结构和各部分的作用,包括包描述、准备阶段、构建过程、安装步骤、清理操作以及文件列表等关键环节。同时,提供了关于RPM宏命令、打包目录结构及常见标签的深入解析。 ... [详细]
  • 近期尝试从www.hub.sciverse.com网站通过编程手段获取数据时遇到问题,起初尝试使用WebBrowser控件进行数据抓取,但发现使用GET方法翻页时,返回的HTML代码始终相同。进一步探究后了解到,该网站的数据是通过Ajax异步加载的,可通过HTTP查看详细的JSON响应。 ... [详细]
  • 开发笔记:新手DVWACSRF
    开发笔记:新手DVWACSRF ... [详细]
author-avatar
男人邦121121121
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有