3分钟理解JSON

转载 2016年05月30日 21:03:03

这几个字母是什么意思?

JavaScript Object Notation.

[一个滑稽的名字。它应该被称作Lightweight Ecmascript Object Notation,或简称’LEON’。 ]

它是个什么东西?

JSON是一种传递对象的语法,对象可以是name/value对,数组和其他对象。

下面是一小段JSON代码:

你看懂了吧?那么当你再看到它时就知道它是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上搜刮来的!)

这就是全部。

理解JSON:3分钟课程

本文是从 Understanding JSON: the 3 minute lesson 这篇文章翻译而来。  如果你跟我一样(我担心你就是),那么,到目前为止,这应该是你对JSON的经验:两个月前你...
  • yobsun
  • yobsun
  • 2016年07月12日 17:01
  • 71

3分钟理解lambda表达式

WHAT is a Lambda Expression? 什么是lambda表达式? A lambda expression is an anonymous function and it is ...
  • diandian0122
  • diandian0122
  • 2012年12月14日 18:36
  • 387

3分钟开始用JSON

SON 数据格式解析 和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为 JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简...
  • hhcncx
  • hhcncx
  • 2016年03月05日 16:08
  • 161

CCF NOI 1056.确定表达式

题目描述 表达式6×9=42对于十进制来说是错误的,但是对于十三进制来说是正确的。即6(13)×9(13)=42(13),而42(13)=4×131+2×130=54(10)。你的任务是写一段程序读...
  • u011544909
  • u011544909
  • 2018年02月02日 12:43
  • 30

浅谈json

前言         做了那么久项目了,但是总感觉自己像是什么都没做一样,因为项目里很多东西都没有去了解总结。在审批系统中,从头到尾都得我们自己整,所以现在回来很多东西都需要自己去理解总结了。 浅...
  • u013044029
  • u013044029
  • 2016年09月28日 11:51
  • 660

对json的理解

以前老师说了一句Java格式的json转换成js格式的json,我从那一直开始纠结,json既然是数据交换语言,格式都一样怎么还有语言之分的?纠结至今,发现,还是之前的学习资料有缺陷,没有详细讲解js...
  • qq_32528231
  • qq_32528231
  • 2016年10月10日 23:43
  • 4637

深入理解JSON对象

麦穗技术 2016-09-21 09:31 前面的话 json(javascript object notation)全称是javascript对象表示法,它是一种数据交换的文本格式,...
  • u011277123
  • u011277123
  • 2016年09月21日 11:15
  • 769

深入理解JSON

文章声明:本文是在某APP上看到的一位程序员发表的文章所做的笔记,无法帖地址,在此说明。 JSON我们都不陌生,但是你真正的了解过JSON么?它是什么?为什么说它是轻量级的数据交换格式以及它的工作方...
  • navigatorOpera
  • navigatorOpera
  • 2017年03月26日 23:40
  • 387

3分钟让你明白JSON是什么

摘要 本文是从 Understanding JSON: the 3 minute lesson 这篇文章翻译而来。看了这篇文章,你就知道为什么说国外的月亮是圆的了,思维方式不是一个数量级的,它完...
  • slwbcsdn
  • slwbcsdn
  • 2016年12月05日 00:30
  • 7740

JSON 之我的理解跟使用

JSON 之我的理解跟使用JSON 这个东西,到底能干什么,我还真不很清楚,我的理解就是,做数据缓存用的,但是不能做很夸张的数据缓存,只能做简单的数据缓存,也就是数据量不能很大,但是使用比较频繁,修改...
  • sanshi0815
  • sanshi0815
  • 2006年10月31日 13:34
  • 1595
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:3分钟理解JSON
举报原因:
原因补充:

(最多只允许输入30个字)