本文是从 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分钟课程
相关推荐
全面系统Python3入门+进阶课程 教程简介 第1章Python入门导学mp4 第2章Python环境安装mp4 第3章理解什么是写代码与Python的基本类型.mp4 第4章Python中表示“组”的概念与定义mp4 第5章变量与运算符.mp4 第6章分支...
基于预训练模型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 ...
第3章理解什么是写代码与Python的基本类型.mp4 第4章Python中表示“组”的概念与定义.mp4 第5章变量与运算符.mp4 第6章分支、循环、条件与枚举.mp4 第7章包、模块、函数与变量作用域.mp4 第8章Python函数.mp4 第9章...
为了加深自己对知识图谱构建的认识,为后续创建贵州旅游知识图谱打下基础,作者学习了张宏伦老师的网易云课程(星球系列电影),强烈推荐大家去学习,并结合自己的理解和技术分享了该系列专栏,从数据采集、数据分析...
Python3⼊门视频教程百度⽹盘 视频内容: 第1章 Python⼊门导学 第2章 Python环境安装 第3章 理解什么是写代码与Python的基本类型 第4章 Python中表⽰"组"的概念与定义 第5章 变量与运算符 第6章 分⽀、循环、条件与...
因为,JavaScript的数组非常特殊,而且如果你能够理解它,那么对于我们学习JSON对象语法就非常容易理解了--因为JSON就是一个数组--我们也可以把它看成一个Hashtable集合对象!本人认为,理解JavaScript的数组是学习...
│ 第01节:整体课程概览.flv │ 第02节:分模块、分工程管理.avi │ 第03节:多模块多Web应用合并War包.avi │ 第04节:Git基本原理和安装配置使用.avi │ 第05节:TortoiseGit的本地使用.avi │ 第06节:Egit的...
课程目录: 01 数字类型:避免自增踩坑.mp4 02 字符串类型:不能忽略的COLLATION.mp4 03 日期类型:TIMESTAMP可能是巨坑.mp4 04非结构存储:用好JSON这张牌.mp4 05 表结构设计:忘记范式准则.mp4 06 表压缩:不仅仅...
总结:本套线上辅导班系统源码是Java开发者进行毕业设计的优选项目,不仅能够帮助学习者深入理解Spring Boot和微服务架构的应用,还能够锻炼实际的项目开发能力。系统功能齐全,界面友好,是一个具备实战价值的综合...
我在main.json中写了几个例子,方便理解 目录:api/tongji,此API请勿删除或更改名称,否则将会影响API调用统计。 在自己的API中顶部加入代码,即可开始统计API总体调用次数 (记得把域名改成API管理站点的域名...
第三周:列表理解 第4周:函数,变量范围,映射/归约,函数编程,递归函数 第5周:字典,复杂数据类型,字典理解,集合,集合理解 第六周:排序,计数,过滤,lambda函数,生成器,生成器理解 第7周:使用文件,JSON...
层架构设计模式编写企业应用程序时的最佳实践以及理解使用 Spring Boot 编写的项目所需的技能 本课程涵盖的主题列表 宁静的 API 日志记录 N层架构 Spring Boot 执行器 依赖注入 单元测试 集成测试 JSON 序列化和反...
课程从基础讲起,全程以实战为基础,每个知识点通过实际项目演练讲解理论实践结合,更容易理解,就算是小白也能接受 通过系统的学习,独立完成企业性能测试任务,助力你成功升级为性能测试工程师
JSP项目实训管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 二、功能介绍 其中Myecplise作为开发工具,采用Mysql作为数据库...
三年制BSC TU代尔夫特航空航天课程的抽认卡存储库。 这些抽认卡旨在帮助巩固您记忆中学习到的内容(对生产特别有用),并且仅在读取/理解所有内容后才可使用。 所有材料均取自Sammaries-归功于Sam van Elsloo。 希望...
本课程设计来源于实习的实际项目——“gravity智能音箱”。该产品是一款基于远场语音交互的音箱。它通过语音识别,语意理解,结果处理,语音合成实现各种功能,不仅能对控制音箱音量,搜索歌曲,歌曲切换,还提供了...
本项目可用于快速搭建基于springBoot的RESTFul API服务,同时集成了swagger作为接口的在线文档与调试工具,数据交互格式建议是JSON格式。 ## 增强理解 [Spring Boot集成swagger2生成接口文档]...
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 简易在线聊天室...