本文是从 Understanding JSON: the 3 minute lesson
这篇文章翻译而来。
如果你跟我一样(我担心你就是),那么,到目前为止,这应该是你对JSON的经验:
- 两个月前你从没
听说过JSON
- 一个月前你听说了这个词但没有留意
- 一周前你发现这个词被提到多次,开始想,没错 … 又有一些垃圾东西要学了
- 今天你被心灵深处的一个闹铃闹醒,心想:这该死的json究竟是个什么东西?为什么突然间到处都是它了!
于是晚上我乘坐了一辆慢腾腾的公交回到家(周五通常都是很慢),然后给自己找了一大堆关于JSON资料。所以我可以文雅的带你进入JSON的大门。
这就开始了 …
这几个字母是什么意思?
J
avaS
cript O
bject N
otation.
[一个滑稽的名字。它应该被称作L
ightweight E
cmascript O
bject N
otation, 或简称 'LEON'。
]
它是个什么东西?
JSON是一种传递对象的语法,对象可以是name/value对,数组和其他对象。
下面是一小段JSON代码:
{"skillz": {
"web":[
{"name": "html",
"years": "5"
},
{"name": "css",
"years": "3"
}],
"database":[
{"name": "sql",
"years": "7"
}]
}}
你看懂了吧?那么当你再看到它时就知道它是JSON了。主要部分:
花括弧,方括弧,冒号和逗号
- 花括弧表示一个“容器”
- 方括号装载数组
- 名称和值用冒号隔开
- 数组元素通过逗号隔开
把它想成“得了厌食症的XML”
(如果你跟我一样老,可以把它想成有层次关系的’.INI’文件)
(如果你是个自以为是的Lisp小丑,可以把它想成”S-expressions”,自以为是吧)
JSON很像XML,因为:
- 他们都“自我描述”,这意味着值都是可列举的,是“人类可读”的
- 都是有层级的。(例如你可以在值里再存放值)
- 都能被多种的编程语言解析和使用
- 都能使用AJAX方法来传递(例如httpWebRequest)
JSON跟XML不一样,因为:
- XML里在元素的开始和结尾处有尖括号和标签名:JSON使用花括号,而且只在数据的开始和结束时使用。
- JSON更简练,毫无疑问更适合人类书写,也许也能让我们更快速的阅读。
- JSON可以在JavaScript里简单的传递到eval()方法里使用
- JSON里有数组{每个元素没有自己的名称}
- 在XML里你可以对一个元素使用任意想要的名称,在JSON里你不能使用Javascript里的保留字
可是为什么?它有什么好的?
当你写ajax之类的东西时,如果你使用JSON,你就勉去了手工拼写XML。更迅速。
同样,当你写ajax之类的东西时,怎样最简单?XML方式还是JSON方式:
XML方式:
- 取回一个XML文件
- 循环它,从中提取值
- 处理这些值,等
对比
JSON方式:
- 取回JSON字符串。
- ‘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。)
本文原始地址:理解JSON:3分钟课程
相关推荐
7. **数据集内容**:提供的JSON文件链接包括了上述所有表格的数据,用户可以下载并分析这些文件以理解课程结构、学习目标和评估策略。这些数据为研究者和开发者提供了丰富的信息,可以用来开发NLP模型,例如自动生成...
《JavaScript与JSON实用指南》是一本旨在帮助读者理解JSON及其在不同场景中应用的实用书籍。书中不仅介绍了JSON的基础知识,还深入探讨了如何使用JavaScript来有效地处理JSON数据。它从一个简单的JavaScript复习课程...
3. **JsonViewer的用途**:JsonViewer作为一款查看工具,可以帮助开发者和非开发者快速查看和理解JSON格式的数据,通过颜色编码和缩进,使层次结构清晰可见。这对于调试API、分析响应或验证JSON数据的有效性非常有用...
8. **标准库**:Python拥有丰富的标准库,包含许多预装的模块,如datetime用于日期和时间处理,random用于生成随机数,json用于JSON数据的编码和解码。 9. **列表推导式和生成器**:这些是Python中的高效工具,用于...
#### 三、JSON 示例分析 考虑以下JSON实例: ```json { "sites": [ { "name": "菜鸟教程", "url": "www.runoob.com" }, { "name": "google", "url": "www.google.com" }, { "name": "微博", "url": ...
Struts1是一个经典的Java Web框架,它为...通过学习这个实例,你可以掌握Struts1的MVC模式,理解数据库设计,以及掌握JSON和Ajax在实际项目中的应用。实践这些知识点,对于提升你的Java Web开发技能是非常有帮助的。
理解JSON数据交互的关键点包括: 1. **JSON数据交互概述**:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在SpringMVC中,JSON用于服务器向客户端...
在描述中提到的“json小例子”是针对初学者的学习资源,可能包含了一系列逐步教程或实例,帮助理解JSON的基本用法以及如何在Java环境中处理JSON数据。JSON通常用于前端和后端之间的数据交互,例如通过Ajax...
本资源集合是老罗Android视频开发课程的一部分,专注于讲解如何在Android平台上解析JSON数据。下面将详细讨论JSON的基本概念、解析方法以及在Android中的实际应用。 首先,JSON是一种基于文本的格式,它以键值对的...
总的来说,这个图书管理系统项目是Java初学者进行课程设计的良好实践,它涵盖了文件IO操作、JSON解析、面向对象编程、控制台交互等多个重要知识点。通过完成这个项目,开发者不仅可以加深对Java语言的理解,还能提高...
JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式。...通过学习JSON的课程,你可以提升你的编程技能,更好地理解数据在网络中的流动方式,并能有效地实现前后端之间的数据交互。
该项目是课程的一部分,可能是教授学生如何与web服务交互,特别是如何处理JSON(JavaScript Object Notation)数据格式。 **描述详解:** "芝加哥天气,作为API课程的项目1制作。调用openweathermap.org以获取...
本教程将深入介绍Python中如何使用JSON,帮助初学者理解其基本概念和操作方法。 首先,我们需要了解JSON的基本结构。JSON数据格式基于JavaScript语法,但它是独立于语言的,具有以下几种主要数据类型: 1. 对象...
3. **数据管理**:微信小程序使用了基于JSON的存储机制,如wx.setStorageSync和wx.getStorageSync,源码中可能包含如何保存和读取用户课程表数据的方法。 4. **API调用**:源码可能涉及到微信小程序提供的API,如...
3. **时间管理**:课程表需要支持按周、日、小时等不同单位显示课程,因此需要对时间进行处理。这可能涉及到日期时间类的使用,如Java的`java.time`包或Python的`datetime`模块。 4. **事件驱动编程**:用户界面中...
【课程管理系统】是一种用于高校或教育机构管理课程信息、学生选课、教师授课以及成绩记录的重要工具。在本科阶段作为大作业开发的这样一个系统,旨在模拟实际教学环境下的信息处理,帮助学生熟悉软件开发流程,提升...
在IT行业中,Ajax...总的来说,"一头扎进Ajax&Json视频教程第二讲"是一次深入学习Ajax异步通信和Json数据交换的好机会,对于前端开发者来说,理解和掌握这些技术对于提升工作效率和创建高质量的Web应用至关重要。
光学课程实验管理系统是一个基于Java和Vue技术栈的毕业设计项目,旨在为高校提供一个便捷、高效的实验课程管理平台。这个系统不仅适用于毕业设计,也可以应用于一般的课程设计,为教师、学生以及管理员提供全面的...