`

深入理解JSON:3分钟课程

 
阅读更多

如果你跟我一样(我担心你就是),那么,到目前为止,这应该是你对JSON的经验:

 

  1. 两个月前你从没听说过JSON
  2. 一个月前你听说了这个词但没有留意
  3. 一周前你发现这个词被提到多次,开始想,没错 … 又有一些垃圾东西要学了
  4. 今天你被心灵深处的一个闹铃闹醒,心想:这该死的json究竟是个什么东西?为什么突然间到处都是它了!

于是晚上我乘坐了一辆慢腾腾的公交回到家(周五通常都是很慢),然后给自己找了一大堆关于JSON资料。所以我可以文雅的带你进入JSON的大门。

这就开始了 …

这几个字母是什么意思?

JavaScript Object Notation.

[一个滑稽的名字。它应该被称作Lightweight Ecmascript Object Notation, 或简称 'LEON'。]

它是个什么东西?

JSON是一种传递对象的语法,对象可以是name/value对,数组和其他对象。

下面是一小段JSON代码:

{"skillz": {
	"web":[
		{"name": "html",
		 "years": "5"
		},
		{"name": "css",
		 "years": "3"
		}],
	"database":[
		{"name": "sql",
		 "years": "7"
		}]
}} 

你看懂了吧?那么当你再看到它时就知道它是JSON了。主要部分:

花括弧,方括弧,冒号和逗号

  1. 花括弧表示一个“容器”
  2. 方括号装载数组
  3. 名称和值用冒号隔开
  4. 数组元素通过逗号隔开

把它想成“得了厌食症的XML”

(如果你跟我一样老,可以把它想成有层次关系的’.INI’文件)

(如果你是个自以为是的Lisp小丑,可以把它想成”S-expressions”,自以为是吧)

JSON很像XML,因为:

  1. 他们都“自我描述”,这意味着值都是可列举的,是“人类可读”的
  2. 都是有层级的。(例如你可以在值里再存放值)
  3. 都能被多种的编程语言解析和使用
  4. 都能使用AJAX方法来传递(例如httpWebRequest)

JSON跟XML不一样,因为: 

  1. XML里在元素的开始和结尾处有尖括号和标签名:JSON使用花括号,而且只在数据的开始和结束时使用。
  2. JSON更简练,毫无疑问更适合人类书写,也许也能让我们更快速的阅读。
  3. JSON可以在JavaScript里简单的传递到eval()方法里使用
  4. JSON里有数组{每个元素没有自己的名称}
  5. 在XML里你可以对一个元素使用任意想要的名称,在JSON里你不能使用Javascript里的保留字

可是为什么?它有什么好的?

当你写ajax之类的东西时,如果你使用JSON,你就勉去了手工拼写XML。更迅速。

同样,当你写ajax之类的东西时,怎样最简单?XML方式还是JSON方式:

XML方式:

  1. 取回一个XML文件
  2. 循环它,从中提取值
  3. 处理这些值,等

对比

JSON方式:

  1. 取回JSON字符串。
  2. ‘eval’ JSON数据

它是面向对象的吗?

No,严格的说,不是。

就像是VB6里的面向对象一样。它提供了很好的封装机制,你可以使用它把数据和方法分离出来,但它不提供任何的继承,多型,接口,或其它类似的面向对象的东西

很显然,它是使javascript变得更易于维护,分析和复用的方向上前进了一步。

Thomas Frank写了一个灵巧的javascript库,叫做classyJSON,它在JSON代码上增加了继承和定义范围等特征。

它只是用在客户端吗?

是,也不是。在服务器端你可以容易的把对象序列化成JSON或反之。对于.net,程序员可以使用类似Json.net的类库使这些操作自动化(我估计是使用反射机制),或你使用自己的程序来做这些事,可能会更快些。

3分钟将近结束….

就我所知,JSON是由一个叫做Douglas Crockford的家伙发明的。如果你喜欢的话,可以看一下他的网站,他非常的有趣。

这就是全部。

我在几分钟的时间里只能整理出这些东西——所有我说的有些东西可能完全是错的。如果是这样,请留言告诉我,告诉我我有多傻。我会很高兴的纠正任何一个错误。祝你好运!

(边注:如果你把 { 和 } 替换成”<” 和 “/>”,把”:” 换成 “/”… 你会得到一个非常像gaXml的东西。有趣的世界。

(边注2:Jason 和 Ajax 都是希腊神话中的英雄。预告:另外一些即将出现的技术垃圾包括:Heracles, Perseus, Deucalion, Theseus
and Bellerophon。)

[本文英文原文链接:Understanding JSON: the 3 minute lesson ]

17
19
分享到:
评论
3 楼 kilowen 2012-02-23  
 
2 楼 该用户名已存在 2012-02-23  
貌似在哪里看到过的
1 楼 bbbbb1202 2012-02-23  

相关推荐

    NLP数据集:国外大学课程的简介、收获和评价标准。来源:新南威尔士大学(UNSW)

    7. **数据集内容**:提供的JSON文件链接包括了上述所有表格的数据,用户可以下载并分析这些文件以理解课程结构、学习目标和评估策略。这些数据为研究者和开发者提供了丰富的信息,可以用来开发NLP模型,例如自动生成...

    ASP.NET AJAX深入浅出系列课程(30):ASP.NET AJAX的相关扩展(下)

    提供的PDF文件"20080320am--ASP.NET AJAX深入浅出系列课程(30):ASP.NET AJAX的相关扩展(下).pdf"应包含了详细的教学内容,包括理论讲解、实例演示和可能的练习题,帮助学习者深入理解和应用这些技术。

    JavaScript and JSON Essentials

    《JavaScript与JSON实用指南》是一本旨在帮助读者理解JSON及其在不同场景中应用的实用书籍。书中不仅介绍了JSON的基础知识,还深入探讨了如何使用JavaScript来有效地处理JSON数据。它从一个简单的JavaScript复习课程...

    Fundamentos-Python:Python基础课程的源代码存储库

    通过实践这些代码,你可以更好地理解和掌握Python的基本概念,为更深入的学习打下坚实基础。记得每次学习新概念时都要动手实践,因为编程的学习很大程度上依赖于实际操作。同时,不断地解决实际问题会进一步巩固你的...

    struts1+JSON实例

    在这个"struts1+JSON实例"中,我们将深入探讨如何结合Struts1、JSON以及Ajax技术来实现一个功能丰富的学生选课系统。 首先,我们需要理解数据库设计的基础知识。在MySQL中,学生选课系统可能包括如下的表:`...

    完整版 Java开发实训课程系列-SpringMVC框架技术教程 第7章 文件上传和json数据交互 (共30页).pptx

    理解JSON数据交互的关键点包括: 1. **JSON数据交互概述**:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在SpringMVC中,JSON用于服务器向客户端...

    ASP.NET AJAX深入浅出系列课程(6):客户端访问WebService(下):原理与细节

    ASP.NET AJAX技术是微软...总之,这个课程将使你对ASP.NET AJAX调用WebService有深入的理解,掌握客户端与服务器端的交互细节,提升你的Web应用开发能力。通过学习和实践,你可以创建更高效、更用户友好的Web应用程序。

    PHP TO ASP.NET 2.0开发系列课程(3):PHP深入编程之AJAX应用

    **PHP与ASP.NET 2.0开发系列课程(3):PHP深入编程之AJAX应用** 本课程聚焦于PHP的深入编程,特别是针对AJAX(Asynchronous JavaScript and XML)技术的应用,旨在帮助开发者从PHP环境过渡到ASP.NET 2.0平台。AJAX是...

    ChicagoWeather:作为API课程的项目1制作。 调用openweathermap.org获取芝加哥天气预报的json

    **标题解析:** "ChicagoWeather:作为API课程的项目1制作。调用openweathermap.org获取芝加哥天气预报...这个项目提供了一个良好的实践平台,让你深入理解API调用和JSON处理,同时巩固JavaScript基础和前端开发技能。

    python自学教程-05-json数据格式的介绍.ev4.rar

    本教程将深入介绍Python中如何使用JSON,帮助初学者理解其基本概念和操作方法。 首先,我们需要了解JSON的基本结构。JSON数据格式基于JavaScript语法,但它是独立于语言的,具有以下几种主要数据类型: 1. 对象...

    SpringMvc深入理解源码分析视频

    本视频课程“SpringMvc深入理解源码分析”旨在帮助开发者深入理解Spring MVC的工作原理和核心机制,从而更好地利用它来构建高效、可维护的Web应用。 在Spring MVC中,主要涉及以下几个核心概念: 1. **...

    课程管理系统

    【课程管理系统】是一种用于高校或教育机构管理课程信息、学生选课、教师授课以及成绩记录的重要工具。...通过实际操作,学生可以深入理解从需求分析到系统上线的全过程,为未来职业生涯奠定坚实基础。

    ASP.NET AJAX深入浅出系列课程(32):构建高安全性ASP.NET AJAX应用程序

    理解JSON Hijacking和JSON Padding等特定的AJAX安全问题,以及如何通过JSON.stringify的secure option来防范,也是学习的一部分。 最后,课程可能还会涉及安全的AJAX开发工具和框架,例如使用jQuery的$.ajax()函数...

    课程表源码

    这通常需要对事件监听器和回调函数有深入理解。 5. **状态管理**:课程表的状态可能包括添加、删除、编辑课程等,需要一个良好的状态管理机制来保持数据的一致性。可以使用MVVM(Model-View-ViewModel)架构模式来...

    一头扎进Ajax&Json视频教程第二讲

    在IT行业中,Ajax...总的来说,"一头扎进Ajax&Json视频教程第二讲"是一次深入学习Ajax异步通信和Json数据交换的好机会,对于前端开发者来说,理解和掌握这些技术对于提升工作效率和创建高质量的Web应用至关重要。

    微信小程序课程表小程序源码.zip

    通过学习和理解这套源码,开发者可以深入掌握微信小程序的开发技巧,并可能应用于毕业设计、期末大作业或课程设计项目。 源码分析: 1. **框架结构**:微信小程序使用了基于WXML(微信小程序标记语言)和WXSS(微信...

    ASP.NET AJAX深入浅出系列课程(31):构建高性能ASP.NET AJAX应用程序

    在这一系列课程的第31讲中,我们将深入探讨如何构建高性能的ASP.NET AJAX应用程序,以下是对相关知识点的详细说明: 1. **AJAX基础**:了解AJAX的基本原理,包括异步通信、局部刷新以及页面无刷新更新,这些特性...

    ASP.NET AJAX深入浅出系列课程(9):使用Microsoft AJAX Library中的面向对象特性来进行开发

    本系列课程旨在帮助开发者深入理解 Microsoft AJAX Library 的核心概念,以及如何利用其面向对象的特性来提升应用程序的性能和用户体验。 在第九部分“使用Microsoft AJAX Library中的面向对象特性来进行开发”中,...

    若依RuoYi框架剖析笔记,该笔记是在学习江南一点雨所录课程再结合自己的理解所写

    12、**权限概念梳理**:深入理解角色、资源、权限等概念,构建清晰的权限模型。 13、**登录授权流程梳理**:分析从用户登录到授权访问的过程,涉及认证、授权、会话管理等环节。 14、**RuoYi-Vue3**:RuoYi的Vue3...

    毕设:光学课程实验管理系统.zip

    - 通过研究Java后端和Vue前端的协作,可以深入理解前后端分离的开发模式。 - 学习如何使用Spring Boot和MyBatis进行数据操作,以及Vue.js的组件化开发思想。 6. **拓展与优化** - 可以考虑引入Docker进行容器化...

Global site tag (gtag.js) - Google Analytics