理解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的家伙发明的。如果你喜欢的话,可以看一下他的网站,他非常的有趣。

现在去读一下懂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。)

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索理解JSON
,以便于您获取更多的相关知识。

时间: 2024-11-15 09:37:04

理解JSON:3分钟课程_json的相关文章

由里到外步步深挖,深入理解JSON

我们先来看一个JS中常见的JS对象序列化成JSON字符串的问题. 请问:以下JS对象通过JSON.stringify后的字符串是怎样的? (先不要急着复制粘贴到控制台,先自己打开一个代码编辑器或者纸,写写看,写完再去仔细对比你的控制台输出,如果有误记得看完全文并评论,哈哈.) 第二个问题,如果我想在最终JSON字符串将这个'friend'的姓名全部变成大写字母,也就是把"Good"变成"GOOD",把"Man"变成"MAN",

JSON相关知识汇总_json

JSON:JavaScript 对象表示法(JavaScript Object Notation) JSON 语法规则 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON有6种类型的值: 对象.数组.字符串.数字.布尔值.null JSON对象是一个容纳"名/值"对的无序集合 名字:任意字符串 值:任意类型的JSON值,包括数组和对象(对象中可以嵌入对象) 注:JSON字符串必须使用双引号(单引号会报错) 一.对象 javascript中创建字面量: var

JSON扫盲帖 JSON.as类教程_json

补充内容: 如果json字符串是从html用FlashVars来传递参数时那么字符串中的第一个双引号(包括双引号)以后的内容就不会得到传送. 而adobe的官方json.as类包里解析josn对象中是少不了双引号的. 所以搞了半天只后用个字符串替换函数啦! 方法看另一篇文章: html传带双引号的参数给flash解决方案 -------------------------------------------------------------------------------------- 先

深入理解JSON数据源格式

 JSON 在很多场合下作为数据格式比XML要更加方便.JSON的数据由对象.数组和元素等格式组成.每种格式都可以包含合法的JavaScript数据类型 JSON [ JavaScript Object Notation ]:JavaScript 对象表示法.    它是一种轻量级的数据交换格式.    JSON 在很多场合下作为数据格式比XML 要更加方便.    JSON 的数据由对象.数组和元素等格式组成.每种格式都可以包含合法的JavaScript 数据类型.    在JavaScrip

JSON 编辑器实现代码_json

大家可以输入或者粘贴一些JSON数据来校验是否正确. 按Tab键自动全文缩进格式化.  JSON 编辑器核心代码 复制代码 代码如下: <script type="text/javascript"><!-- /* main Object */ JE={ data:{},/* 关联数据 */ code:false,/* 格式化后的代码 */ oldCode:[],/* 历史代码 */ editUI:null,/* 关联编辑框 */ msgUI:null,/* 信息显示窗

打印json对象的内容及JSON.stringify函数应用_json

在调试的时候,经常需要知道json对象的内容,通过JSON.stringify函数,可以转换json对象为字符串. 复制代码 代码如下: $(document).ready(function() { $.ajax({ type: "post", dataType: "json", url: '/centermanage/modules/admin/index.php?task=getequipmentinfo', data: "&id="

JS对象与JSON格式数据相互转换_json

目前的项目数据交互几乎都用JQuery,所以处理流程是:前端页面数据->JS对象->jQuery提交->python处理,另外一种就是倒过来.python肯定不能直接处理JS对象数据,所以要把JS对象转换成为python能处理的一种数据格式(通常是字典dict),同样,python取数据反馈到前端也要把字典数据转换成JS能处理的对象,这个中间转换数据格式通常就是JSON. 一.JS对象转换成为JSON 流程:读取前端页面数据,组装成为JS对象,并通过jQuery的$.post()方法传递

深入理解JSON数据源格式_javascript技巧

JSON [ JavaScript Object Notation ]:JavaScript 对象表示法. 它是一种轻量级的数据交换格式. JSON 在很多场合下作为数据格式比XML 要更加方便. JSON 的数据由对象.数组和元素等格式组成.每种格式都可以包含合法的JavaScript 数据类型. 在JavaScript 中,可以通过eval( ) 方法将字符串直接转化为JSON 格式. JSON 数据源格式如下: 示例一: 复制代码 代码如下: {     "tablename":

ASP Json Parser修正版_json

但后来用的时候,发现一个问题,如果json比较单纯,就没什么问题,如果json中含有数组,由于vbs是不可以直接引用js中数组元素的,所以,导致无法访问json对象中的数组元素.试过很多种办法,pop啦,之类的,都不行.再查网上,也无果. 郁闷很久, 转而搜索"vbscript how to access javascript array",竟然给我找到一篇老外的文章.经过调试,发现老外的办法不错.访问不了的原因是没有定义相应的get方法.转而加入他这个get索引器,一试,ok了. 代