理解JSON:3分钟课程

  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上搜刮来的!)

这就是全部。

我在几分钟的时间里只能整理出这些东西——所有我说的有些东西可能完全是错的。如果是这样,请留言告诉我,告诉我我有多傻。我会很高兴的纠正任何一个错误。祝你好运!

(边注:如果你把 { 和 } 替换成”<” 和 “/>”,把”:” 换成 “/”… 你会得到一个非常像gaXml的东西。有趣的世界。

(边注2:JasonAjax 都是希腊神话中的英雄。预告:另外一些即将出现的技术垃圾包括:Heracles, Perseus, Deucalion, Theseus
and Bellerophon。)

(0)

相关推荐

  • 理解JSON:3分钟课程

    两个月前你从没听说过JSON 一个月前你听说了这个词但没有留意 一周前你发现这个词被提到多次,开始想,没错 - 又有一些垃圾东西要学了 今天你被心灵深处的一个闹铃闹醒,心想:这该死的json究竟是个什么东西?为什么突然间到处都是它了! 于是晚上我乘坐了一辆慢腾腾的公交回到家(周五通常都是很慢),然后给自己找了一大堆关于JSON资料.所以我可以文雅的带你进入JSON的大门. 这就开始了 - 这几个字母是什么意思? JavaScript Object Notation. [一个滑稽的名字.它应该被称

  • 深入理解JSON数据源格式

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

  • js中json对象和字符串的理解及相互转化操作实现方法

    本文实例讲述了js中json对象和字符串的理解及相互转化操作实现方法.分享给大家供大家参考,具体如下: <script> var str="{'strv':["+ "{'a':'a11'},"+ " {'a':'b222'}"+ " ]}"; //如果放在一行更清楚:var str="{'strv':[{'a':'a11'}, {'a':'b222'} ]}"; var str2=eval('(

  • 深入理解 JavaScript 中的 JSON

    我们先来看一个JS中常见的JS对象序列化成JSON字符串的问题,请问,以下JS对象通过JSON.stringify后的字符串是怎样的?先不要急着复制粘贴到控制台,先自己打开一个代码编辑器或者纸,写写看,写完再去仔细对比你的控制台输出,如果有误记得看完全文并评论,哈哈. var friend={ firstName: 'Good', 'lastName': 'Man', 'address': undefined, 'phone': ["1234567",undefined], 'full

  • json的定义、标准格式及json字符串检验

    现在越来越多的项目和开发插件等默认都会支持和使用json数据格式,作为数据保持.传输的一种方式. 说是其中一种,就标示还有好多其他格式.比如:最多是xml.webservice的标准数据格式. 不过由于json是JavaScript 对象表示法(JavaScript Object Notation),天生就对js支持很好, 所以现在很多的ajax等都使用json,反而会更好处理一些. 1.定义 什么是 JSON ?1.JSON 指的是 JavaScript 对象表示法(JavaScript Ob

  • 用 JSON 处理缓存

    数据验证是每个企业 Web 应用程序中最富于挑战性.日新月异的部分.通常验证元数据会使 JavaScript 模块中混入服务器端代码.在本文中,您将了解如何在服务器代码的帮助下将元数据缓存在客户端的优秀方法,服务器代码将提供 JSON(JavaScript Object Notation)形式的字符串化元数据.这种方法还允许以类似 Ajax 的方式来处理多值和多组属性. 每个应用程序的开发都是为了解决某个领域的问题.而每个领域都有自己的一套约束数据的规则和规范.应用程序将这些约束应用于数据时,约

  • 如何使用ajax读取Json中的数据

    本文给大家分享一下,如何使用ajax读取Json中的数据. 一.基础知识 什么是json? JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSON 具有自我描述性,更易理解 JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台.JSON 解析器和 JSON 库支持许多不同的编程语言. JSON - 转换为 JavaScript 对

  • Ajax与JSON的一些学习总结

    1.1.1 摘要 Ajax技术的核心是XMLHttpRequest对象(简称XHR),可以通过使用XHR对象获取到服务器的数据,然后再通过DOM将数据插入到页面中呈现.虽然名字中包含XML,但Ajax通讯与数据格式无关,所以我们的数据格式可以是XML或JSON等格式. XMLHttpRequest对象用于在后台与服务器交换数据,具体作用如下: 在不重新加载页面的情况下更新网页 在页面已加载后从服务器请求数据 在页面已加载后从服务器接收数据 在后台向服务器发送数据 1.1.2 正文 XMLHttp

  • go json转换实践中遇到的坑

    在使用 go 语言开发过程中,经常需要使用到 json 包来进行 json 和 struct 的互相转换,在使用过程中,遇到了一些需要额外注意的地方,记录如下. 整数变浮点数问题 假设有一个 Person 结构,其中包含 Age int64 和 Weight float64 两个字段,现在通过 json 包将 Person 结构转为 map[string]interface{},代码如下. type Person struct { Name string Age int64 Weight flo

  • Python中的正则表达式与JSON数据交换格式

    一.初识正则表达式 正则表达式 是一个特殊的字符序列,一个字符串是否与我们所设定的这样的字符序列,相匹配快速检索文本.实现替换文本的操作 json(xml) 轻量级 web 数据交换格式 import re a='C|C++|Java|C#||Python|Javascript' r= re.findall('Python',a) print(r) if len(r) > 0: print('字符串中包含Python') else: print('No') ['Python'] 字符串中包含Py

随机推荐