JSON 이해하기: 3분 Lesson_json

WBOY
풀어 주다: 2016-05-16 18:00:14
원래의
1126명이 탐색했습니다.
  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数据

객체지향인가요?

아니요, 엄밀히 말하면 아닙니다.

VB6의 객체지향과 같습니다. 이는 좋은 캡슐화 메커니즘을 제공하므로 이를 사용하여 데이터와 메서드를 분리할 수 있지만 상속, 폴리타입, 인터페이스 또는 기타 유사한 객체 지향 기능은 제공하지 않습니다.

분명히 이는 JavaScript를 유지 관리, 분석 및 재사용하기 쉽게 만드는 데 있어서 한 단계 더 발전한 것입니다.

Thomas Frank는 JSON 코드에 상속 및 정의 범위와 같은 기능을 추가하는 classyJSON이라는 유연한 자바스크립트 라이브러리를 작성했습니다.

클라이언트측에서만 사용되나요?

예, 아니오. 서버 측에서는 객체를 JSON으로 쉽게 직렬화하거나 그 반대로 직렬화할 수 있습니다. .net의 경우 프로그래머는 Json.net과 같은 클래스 라이브러리를 사용하여 이러한 작업을 자동화하거나(반사 메커니즘을 사용하는 것 같습니다) 자신의 프로그램을 사용하여 이러한 작업을 수행할 수 있습니다. .

3분이 거의 끝나갑니다….

내가 아는 한 JSON은 Douglas Crockford라는 사람이 발명했습니다. 마음에 드셨다면 그의 웹사이트를 방문해 보세요. 그는 매우 흥미롭습니다.

그게 다입니다.

이것이 제가 정리할 시간이 있는 전부입니다. 제가 말한 것은 제가 말한 내용 중 일부가 완전히 틀릴 수도 있다는 것뿐입니다. 그렇다면 댓글을 남겨 제가 얼마나 멍청한지 알려주세요. 어떤 실수라도 기꺼이 바로잡겠습니다. 행운을 빌어요!

(참고: { 및 }를 "<" 및 "/>"로 바꾸고 ":"를 "/"로 바꾸면... gaXml과 매우 유사한 결과를 얻게 됩니다. 재미있는 세상

(참고 2: JasonAjax는 모두 그리스 신화의 영웅입니다. 미리보기: 곧 출시될 다른 기술 쓰레기에는 Heracles, Perseus, Deucalion, Theseus
및 Bellerophon이 포함됩니다. )

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿