`
JavaCrazyer
  • 浏览: 2990118 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类

理解JSON:3分钟课程

阅读更多

本文是从 Understanding JSON: the 3 minute lesson 这篇文章翻译而来。


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

  1. 两个月前你从没 听说过JSON
  2. 一个月前你听说了这个词但没有留意
  3. 一周前你发现这个词被提到多次,开始想,没错 … 又有一些垃圾东西要学了
  4. 今天你被心灵深处的一个闹铃闹醒,心想:这该死的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了。主要部分:

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

  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:JasonAjax 都是希腊神话中的英雄。预告:另外一些即将出现的技术垃圾包括:Heracles, Perseus, Deucalion, Theseus
and Bellerophon。)


本文原始地址:理解JSON:3分钟课程

分享到:
评论
1 楼 hongri0808 2013-12-11  
  

相关推荐

    全面系统Python3入门+进阶课程

    全面系统Python3入门+进阶课程 教程简介 第1章Python入门导学mp4 第2章Python环境安装mp4 第3章理解什么是写代码与Python的基本类型.mp4 第4章Python中表示“组”的概念与定义mp4 第5章变量与运算符.mp4 第6章分支...

    课程设计-基于预训练模型BERT的阅读理解python源码+使用说明.zip

    基于预训练模型BERT的阅读理解python源码+使用说明.zip 1. Prepare data, the virtual python environment and install the package in requirements.txt 2. Run the command below to fine tune ```bash python ...

    Python3入门到进阶课程

    第3章理解什么是写代码与Python的基本类型.mp4 第4章Python中表示“组”的概念与定义.mp4 第5章变量与运算符.mp4 第6章分支、循环、条件与枚举.mp4 第7章包、模块、函数与变量作用域.mp4 第8章Python函数.mp4 第9章...

    数据抓取之Python3抓取JSON格式的星球大战电影实体

    为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者学习了张宏伦老师的网易云课程(星球系列电影),强烈推荐大家去学习,并结合自己的理解和技术分享了该系列专栏,从数据采集、数据分析...

    Python3入门视频教程百度网盘.pdf

    Python3⼊门视频教程百度⽹盘 视频内容: 第1章 Python⼊门导学 第2章 Python环境安装 第3章 理解什么是写代码与Python的基本类型 第4章 Python中表⽰"组"的概念与定义 第5章 变量与运算符 第6章 分⽀、循环、条件与...

    使用JavaScript数组模拟Java的Hashtable集合

    因为,JavaScript的数组非常特殊,而且如果你能够理解它,那么对于我们学习JSON对象语法就非常容易理解了--因为JSON就是一个数组--我们也可以把它看成一个Hashtable集合对象!本人认为,理解JavaScript的数组是学习...

    网络架构师148讲视频课程

    │ 第01节:整体课程概览.flv │ 第02节:分模块、分工程管理.avi │ 第03节:多模块多Web应用合并War包.avi │ 第04节:Git基本原理和安装配置使用.avi │ 第05节:TortoiseGit的本地使用.avi │ 第06节:Egit的...

    MySQL必知必会常识技巧实战宝典

    课程目录: 01 数字类型:避免自增踩坑.mp4 02 字符串类型:不能忽略的COLLATION.mp4 03 日期类型:TIMESTAMP可能是巨坑.mp4 04非结构存储:用好JSON这张牌.mp4 05 表结构设计:忘记范式准则.mp4 06 表压缩:不仅仅...

    JAVA毕业设计之基于springboot的线上辅导班系统的开发与设计(springboot+mysql)完整源码.zip

    总结:本套线上辅导班系统源码是Java开发者进行毕业设计的优选项目,不仅能够帮助学习者深入理解Spring Boot和微服务架构的应用,还能够锻炼实际的项目开发能力。系统功能齐全,界面友好,是一个具备实战价值的综合...

    基于PHP开发的拟态风格的简约API管理系统源码+使用说明.zip

    我在main.json中写了几个例子,方便理解 目录:api/tongji,此API请勿删除或更改名称,否则将会影响API调用统计。 在自己的API中顶部加入代码,即可开始统计API总体调用次数 (记得把域名改成API管理站点的域名...

    python_lessons:课程“使用python语言编程”的注释

    第三周:列表理解 第4周:函数,变量范围,映射/归约,函数编程,递归函数 第5周:字典,复杂数据类型,字典理解,集合,集合理解 第六周:排序,计数,过滤,lambda函数,生成器,生成器理解 第7周:使用文件,JSON...

    java讲师笔试题-spring-boot-master-class-course:SpringBoot大师班课程

    层架构设计模式编写企业应用程序时的最佳实践以及理解使用 Spring Boot 编写的项目所需的技能 本课程涵盖的主题列表 宁静的 API 日志记录 N层架构 Spring Boot 执行器 依赖注入 单元测试 集成测试 JSON 序列化和反...

    Jmeter性能测试高级项目实践课程资源.rar

    课程从基础讲起,全程以实战为基础,每个知识点通过实际项目演练讲解理论实践结合,更容易理解,就算是小白也能接受 通过系统的学习,独立完成企业性能测试任务,助力你成功升级为性能测试工程师

    JSP项目实训管理系统myeclipse开发mysql数据库web结构java编程

    JSP项目实训管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 二、功能介绍 其中Myecplise作为开发工具,采用Mysql作为数据库...

    Flashcards-TUD-BSc-Y3:三年级TU代尔夫特航空航天课程的抽认卡存储库

    三年制BSC TU代尔夫特航空航天课程的抽认卡存储库。 这些抽认卡旨在帮助巩固您记忆中学习到的内容(对生产特别有用),并且仅在读取/理解所有内容后才可使用。 所有材料均取自Sammaries-归功于Sam van Elsloo。 希望...

    计算机课程设计+gravity智能音箱+Android开发+毕业设计

    本课程设计来源于实习的实际项目——“gravity智能音箱”。该产品是一款基于远场语音交互的音箱。它通过语音识别,语意理解,结果处理,语音合成实现各种功能,不仅能对控制音箱音量,搜索歌曲,歌曲切换,还提供了...

    基于SpringBoot编写的RESTFul API,使用HTTP状态码与JSON作为响应规范+源代码+文档说明

    本项目可用于快速搭建基于springBoot的RESTFul API服务,同时集成了swagger作为接口的在线文档与调试工具,数据交互格式建议是JSON格式。 ## 增强理解 [Spring Boot集成swagger2生成接口文档]...

    (全)传智播客PHP就业班视频完整课程

    10-22 3 json 10-22 4 ajax如何处理json格式返回数据 10-22 5 ajax应用 省市联动 10-22 6 ajax应用 黄金市场报价 10-23 1 简易在线聊天室1 10-23 2 简易在线聊天室2 10-23 3 简易在线聊天室3 10-23 4 简易在线聊天室...

Global site tag (gtag.js) - Google Analytics