源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

理解JSON:3分钟课程

  • 时间:2022-07-30 17:05 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:理解JSON:3分钟课程
[list=1] [*]两个月前你[b]从没[/b]听说过JSON [/*][*]一个月前你听说了这个词但没有留意 [/*][*]一周前你发现这个词被提到多次,开始想,[i]没错 … 又有一些垃圾东西要学了[/i] [/*][*]今天你被心灵深处的一个闹铃闹醒,心想:[b]这该死的json究竟是个什么东西?为什么突然间到处都是它了![/b] [/*][/list] 于是晚上我乘坐了一辆慢腾腾的公交回到家(周五通常都是很慢),然后给自己找了一大堆关于JSON资料。所以我可以文雅的带你进入JSON的大门。 这就开始了 … [h2]这几个字母是什么意思?[/h2] [b]J[/b]ava[b]S[/b]cript[b]O[/b]bject[b]N[/b]otation. [一个滑稽的名字。它应该被称作[b]L[/b]ightweight[b]E[/b]cmascript[b]O[/b]bject[b]N[/b]otation, 或简称 'LEON'。 [img]http://www.aqee.net/wordpress/wp-includes/images/smilies/icon_wink.gif[/img] ] [h2]它是个什么东西?[/h2] JSON是一种传递对象的语法,对象可以是name/value对,数组和其他对象。 下面是一小段JSON代码:
{"skillz": {
 "web":[
  {"name": "html",
   "years": "5"
  },
  {"name": "css",
   "years": "3"
  }],
 "database":[
  {"name": "sql",
   "years": "7"
  }]
}}
你看懂了吧?那么当你再看到它时就知道它是JSON了。主要部分: [h2]花括弧,方括弧,冒号和逗号[/h2] [list=1] [*]花括弧表示一个“容器” [/*][*]方括号装载数组 [/*][*]名称和值用冒号隔开 [/*][*]数组元素通过逗号隔开 [/*][/list] [h2]把它想成“得了厌食症的XML”[/h2] (如果你跟我一样老,可以把它想成有层次关系的'.INI'文件) (如果你是个自以为是的Lisp小丑,可以把它想成”S-expressions”,自以为是吧) [h2]JSON很像XML,因为:[/h2] [list=1] [*]他们都“自我描述”,这意味着值都是可列举的,是“人类可读”的 [/*][*]都是有层级的。(例如你可以在值里再存放值) [/*][*]都能被多种的编程语言解析和使用 [/*][*]都能使用AJAX方法来传递(例如httpWebRequest) [/*][/list] [h2]JSON跟XML不一样,因为:[/h2] [list=1] [*]XML里在元素的开始和结尾处有尖括号和标签名:JSON使用花括号,而且只在数据的开始和结束时使用。 [/*][*]JSON更简练,毫无疑问更适合人类书写,也许也能让我们更快速的阅读。 [/*][*]JSON可以在JavaScript里简单的传递到eval()方法里使用 [/*][*]JSON里有数组{每个元素没有自己的名称} [/*][*]在XML里你可以对一个元素使用任意想要的名称,在JSON里你不能使用Javascript里的保留字 [/*][/list] [h2]可是为什么?它有什么好的?[/h2] 当你写ajax之类的东西时,如果你使用JSON,你就勉去了手工拼写XML。更迅速。 同样,当你写ajax之类的东西时,怎样最简单?XML方式还是JSON方式:
[h2]XML方式:[/h2] [list=1] [*]取回一个XML文件 [/*][*]循环它,从中提取值 [/*][*]处理这些值,等 [/*][/list] [h2]对比[/h2] [h2]JSON方式:[/h2] [list=1] [*]取回JSON字符串。 [/*][*]‘eval' JSON数据 [/*][/list]
[h2]它是面向对象的吗?[/h2] No,严格的说,不是。 就像是VB6里的面向对象一样。它提供了很好的封装机制,你可以使用它把数据和方法分离出来,但它不提供任何的继承,多型,接口,或其它类似的面向对象的东西 很显然,它是使javascript变得更易于维护,分析和复用的方向上前进了一步。 [url=http://www.thomasfrank.se/]Thomas Frank[/url]写了一个[url=http://www.thomasfrank.se/classy_json.html]灵巧的javascript库[/url],叫做[i]classyJSON[/i],它在JSON代码上增加了继承和定义范围等特征。 [h2]它只是用在客户端吗?[/h2] 是,也不是。在服务器端你可以容易的把对象序列化成JSON或反之。对于[code].net[/code],程序员可以使用类似[url=http://www.newtonsoft.com/products/json/]Json.net[/url]的类库使这些操作自动化(我估计是使用反射机制),或你使用自己的程序来做这些事,可能会更快些。 [h2]3分钟将近结束….[/h2] 就我所知,JSON是由一个叫做[url=http://www.crockford.com/]Douglas Crockford[/url]的家伙发明的。如果你喜欢的话,可以看一下[url=http://www.crockford.com/]他的网站[/url],他非常的有趣。
[h2]现在去读一下懂JSON的人写的东西[/h2] (从[url=http://del.icio.us/help/json]Delicious using JSON[/url]上搜刮来的!) [list] [*][url=http://homepages.nildram.co.uk/~9jack9/base2/speedtest/]DOM Query Speed Test[/url] [/*][*][url=http://24ways.org/advent/dont-be-eval]24 ways: Don't be eval()[/url] [/*][*][url=http://www.aqee.net/2011/05/26/understanding-json-the-3-minute-lesson/]Understanding JSON: the 3 minute lesson[/url] [/*][*][url=http://www.hanselman.com/blog/SerializingObjectsAsJavaScriptUsingAtlasJSONNETAndAjaxPro.aspx]Serializing Objects as JavaScript using Atlas, JSON.NET and AjaxPro[/url] [/*][*][url=http://en.wikipedia.org/wiki/JSON]JSON – Wikipedia, the free encyclopedia[/url] [/*][*][url=http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=11]Introduction to JSON[/url] [/*][*][url=http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html]XML.com: JSON and the Dynamic Script Tag: Easy, XML-less Web Services for JavaScript[/url] [/*][*][url=http://www.thomasfrank.se/classy_json.html]Classy JSON[/url] [/*][*][url=http://simpletutorials.com/w3/index.php?pagename=Simple%20AJAX%20%28PHP%29%20tutorial]ajax json tutoral[/url] [/*][*][url=http://www.thomasfrank.se/xml_to_json.html]XML to JSON – a converter[/url] [/*][/list]
[h2]这就是全部。[/h2] 我在几分钟的时间里只能整理出这些东西——所有我说的有些东西可能完全是错的。如果是这样,请留言告诉我,告诉我我有多傻。我会很高兴的纠正任何一个错误。祝你好运! (边注:如果你把 { 和 } 替换成”<” 和 “/>”,把”:” 换成 “/”… 你会得到一个非常像[url=http://secretgeek.net/gaXml.asp]gaXml[/url]的东西。有趣的世界。 (边注2:[url=http://en.wikipedia.org/wiki/Jason]Jason[/url] 和 [url=http://en.wikipedia.org/wiki/Ajax_%28mythology%29]Ajax[/url] 都是希腊神话中的英雄。预告:另外一些即将出现的技术垃圾包括:Heracles, Perseus, Deucalion, Theseus and Bellerophon。)
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部