热门标签 | 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 以开发交互式和响应性网络应用的漫长旅程的坚实开端。


推荐阅读
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 为开发者提供了一系列实用的参考网站和资源链接,包括HTML速查手册( 和 ),帮助开发者快速查找和学习相关技术知识。此外,还涵盖了其他重要的开发工具和文档,为编程工作提供全面支持。 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 本文探讨了如何利用 jQuery 的 JSONP 技术实现跨域调用外部 Web 服务。通过详细解析 JSONP 的工作原理及其在 jQuery 中的应用,本文提供了实用的代码示例和最佳实践,帮助开发者解决跨域请求中的常见问题。 ... [详细]
  • 《精通 jQuery》第六章:深入解析与实战应用
    《精通 jQuery》第六章:深入解析与实战应用本章详细探讨了 Ajax 技术的核心机制及其实际应用。Ajax 通过 XMLHttpRequest 对象实现客户端与服务器之间的异步数据交换,从而在不重新加载整个页面的情况下更新部分内容。这种技术不仅提升了用户体验,还提高了应用的响应速度和效率。此外,本章还介绍了如何利用 jQuery 简化 Ajax 操作,并提供了多个实战案例,帮助读者更好地理解和掌握这一重要技术。 ... [详细]
  • 为了满足专业设计师的需求,我需要一个工具,能够将使用JQuery构建的动态页面转换为纯静态HTML,而无需引用任何JavaScript文件。该工具应具备模拟当前页面的功能,以确保在开发和测试过程中保持页面的完整性和一致性。此外,该工具还应支持高效的页面调试和优化,以便设计师能够快速验证和调整页面布局及样式。 ... [详细]
  • 【前端开发】深入探讨 RequireJS 与性能优化策略
    随着前端技术的迅速发展,RequireJS虽然不再像以往那样吸引关注,但其在模块化加载方面的优势仍然值得深入探讨。本文将详细介绍RequireJS的基本概念及其作为模块加载工具的核心功能,并重点分析其性能优化策略,帮助开发者更好地理解和应用这一工具,提升前端项目的加载速度和整体性能。 ... [详细]
  • 首先,我有点像jQuerynoob和整个PHPnoob,所以如果这是一个愚蠢的问题,我感到很抱歉(尽管我已经搜索了Internet,尤其是这个网站的上下无法弄清我的意思.错了).另 ... [详细]
  • 使用jqTransform插件美化表单
    jqTransform 是由 DFC Engineering 开发的一款 jQuery 插件,专用于美化表单元素,操作简便,能够美化包括输入框、单选按钮、多行文本域、下拉选择框和复选框在内的所有表单元素。 ... [详细]
  • 如何在PHP中嵌入JavaScript(2023年最新实践指南) ... [详细]
  • 不确定是否有任何Firefox附加工具可用于检查JavaScript语法,var声明,甚至是预编译可用?我发现在webhtml页面中调试JavaScript非常困难.我必须在那里添 ... [详细]
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社区 版权所有