摘要 本文是从 Understanding JSON: the 3 minute lesson这篇文章翻译而来。看了这篇文章,你就知道为什么说国外的月亮是圆的了,思维方式不是一个数量级的,它完全把你整个脑海里面的思绪全部都理了出来,有种读意识流和散文的享受。

如果你跟我一样(我担心你就是),那么,到目前为止,这应该是你对JSON的经验:
两个月前你从没听说过JSON
一个月前你听说了这个词但没有留意
一周前你发现这个词被提到多次,开始想,没错…又有一些垃圾东西要学了
今天你被心灵深处的一个闹铃闹醒,心想:这该死的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了。主要部分:

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

把它想成“得了厌食症的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的家伙发明的。如果你喜欢的话,可以看一下他的网站,他非常的有趣。
  
现在去读一下懂JSON的人写的东西
(从Delicious using JSON上搜刮来的!)
DOM Query Speed Test
24 ways: Don’t be eval()
Understanding JSON: the 3 minute lesson
Serializing Objects as JavaScript using Atlas, JSON.NET and AjaxPro
JSON – Wikipedia, the free encyclopedia
Introduction to JSON
XML.com: JSON and the Dynamic Script Tag: Easy, XML-less Web Services for JavaScript
Classy JSON
ajax json tutoral
XML to JSON – a converter
这就是全部。
我在几分钟的时间里只能整理出这些东西——所有我说的有些东西可能完全是错的。如果是这样,请留言告诉我,告诉我我有多傻。我会很高兴的纠正任何一个错误。祝你好运!
(边注:如果你把{和}替换成”<”和“/>”,把”:”换成“/”…你会得到一个非常像gaXml的东西。有趣的世界。
(边注2:Jason 和 Ajax 都是希腊神话中的英雄。预告:另外一些即将出现的技术垃圾包括:Heracles, Perseus, Deucalion, Theseus and Bellerophon。)

3分钟让你明白JSON是什么相关推荐

  1. 转:10分钟掌握XML、JSON及其解析

    10分钟掌握XML.JSON及其解析 转载于:https://www.cnblogs.com/kira2will/p/4086047.html

  2. 一分钟让你明白OKR考核

    一分钟让你明白OKR考核 HR·易 HR·易,是由一群热爱人力资源人士专心运营的HR社区,聚焦于HR的招聘.社交.资讯.工具与成长.HR,so easy! 一.什么是OKR体系? OKR体系的全称是O ...

  3. 西门子PLC,1200PLC如何接线,2分钟就能明白

    西门子PLC,1200PLC如何接线,2分钟就能明白 西门子PLC,1200PLC如何接线,2分钟就能明白_哔哩哔哩_bilibili

  4. 10分钟 GET 新技能 - JSON

    10分钟 GET 新技能 - JSON 1. JSON是什么? 2. JSON 的基本规则 3. Python 标准库 json 中使用 JSON 10分钟 GET 新技能 - JSON 1. JSO ...

  5. 十分钟让你明白AIDL

    前言 我在[003]AIDL是什么中介绍的AIDL,但是好像还有朋友不明白问我,那我就来写一个终极版的文章,让你十分钟彻底明白AIDL,以下代码全为手写. 目标 Server进程注册一个Binder服 ...

  6. 10分钟学会js处理json常用方法

    一.json定义 JSON ( JavaScript Object Notation) ,它是一串字符串 只不过元素会使用特定的符号标注. {} 双括号表示对象 [] 中括号表示数组 "&q ...

  7. 两分钟让你明白什么叫ERP

    ERP(Enterprise Resource Planning)企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台.       不知各位听 ...

  8. mysql调试索引_10 分钟让你明白 MySQL 是如何利用索引的?

    一.前言 在 MySQL 中进行 SQL 优化的时候,经常会在一些情况下,对 MySQL 能否利用索引有一些迷惑. 譬如: MySQL 在遇到范围查询条件的时候就停止匹配了,那么到底是哪些范围条件? ...

  9. [转]两分钟让你明白什么是ERP!

    ERP(Enterprise Resource Planning)企业资源计划系统,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台. 一天中午,丈夫在外给家 ...

最新文章

  1. qt能使用logback_使用ELK系统分析SpringBoot日志
  2. jquery中this与$(this)的用法区别.
  3. Objective-C KVC
  4. KVM 标准化安装文档
  5. 083_JavaScript Cookies
  6. python爬虫1——获取网站源代码(豆瓣图书top250信息)
  7. numpy数组的索引和切片
  8. iphone查看删除的短信_想要恢复已经删除的的短信怎么办?
  9. java文件端点续传效果图_Java单依赖性Dockerized HTTP端点
  10. 作者:贺田田(1985-),男,香港理工大学电子计算学系博士生
  11. 搭建LAMP环境的过程详细总结
  12. codeforces 848B Rooter's Song 思维题
  13. java pfx提取私钥加签,详解pfx证书提取公私钥的方法
  14. vs2012 使用mysql_vs2012连接mysql
  15. python惰性_如何创建惰性属性以提高Python的性能
  16. 基于python的贴吧舆情监控助手实战
  17. 推荐给大家的桌面管理软件: Fences
  18. XPDL之流程定义元模型
  19. python---flask解决跨域
  20. Win7(老PC)Python环境搭建实战

热门文章

  1. NVIDIA Jetson TX2 挂载SSD硬盘
  2. 12C Fruits
  3. PatchMatch算法详解(python代码实现)
  4. 浅谈计算机辅助数学教学论文,论文浅谈对计算机辅助数学教学的认识.doc
  5. Python爬虫实战之一 - 基于Requests爬取拉勾网招聘信息,并保存至本地csv文件
  6. 【Java 总结思考】Java 答疑解惑之基础篇
  7. 从事erp行业人员职业发展过程
  8. 使用solr模拟京东搜素功能
  9. fisher线性判别分析matlab,线性判别分析LDA
  10. 2010-11-20至2010-12-20