>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring:Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 20318 个阅读者 刷新本主题
 * 贴子主题:  3分钟让你明白JSON是什么 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2020-03-09 20:05:23     消息  查看  搜索  好友  邮件  复制  引用

                                                                                                

3分钟让你明白JSON是什么

  摘要 本文是从 Understanding JSON: the 3 minute lesson这篇文章翻译而来。看了这篇文章,你就知道为什么说国外的月亮是圆的了,思维方式不是一个数量级的,它完全把你整个脑海里面的思绪全部都理了出来,有种读意识流和散文的享受。
如果你跟我一样(我担心你就是),那么,到目前为止,这应该是你对JSON的经验:
两个月前你从没听说过JSON
一个月前你听说了这个词但没有留意
一周前你发现这个词被提到多次,开始想,没错…又有一些垃圾东西要学了
今天你被心灵深处的一个闹铃闹醒,心想:这该死的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了。主要部分:

     花括弧,方括弧,冒号和逗号

花括弧表示一个“容器”

方括号装载数组

名称和值用冒号隔开

数组元素通过逗号隔开

     把它想成“得了厌食症的XML”

(如果你跟我一样老,可以把它想成有层次关系的’.INI’文件)

(如果你是个自以为是的Lisp小丑,可以把它想成”S-expressions”,自以为是吧)

     JSON很像XML,因为:

他们都“自我描述”,这意味着值都是可列举的,是“人类可读”的

都是有层级的。(例如你可以在值里再存放值)

都能被多种的编程语言解析和使用

都能使用AJAX方法来传递(例如httpWebRequest)

     JSON跟XML不一样,因为:

XML里在元素的开始和结尾处有尖括号和标签名:JSON使用花括号,而且只在数据的开始和结束时使用。

JSON更简练,毫无疑问更适合人类书写,也许也能让我们更快速的阅读。

JSON可以在JavaScript里简单的传递到eval()方法里使用

JSON里有数组{每个元素没有自己的名称}

在XML里你可以对一个元素使用任意想要的名称,在JSON里你不能使用Javascript里的保留字

     可是为什么?它有什么好的?

当你写ajax之类的东西时,如果你使用JSON,你就免去了手工拼写XML。更迅速。

同样,当你写ajax之类的东西时,怎样最简单?XML方式还是JSON方式:

XML方式:

取回一个XML文件

循环它,从中提取值

处理这些值,等 

JSON方式:

取回JSON字符串。

‘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

[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]

这就是全部。

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

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

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

                                                                                                                
----------------------------
原文链接:https://blog.csdn.net/slwbcsdn/article/details/53458352

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-03-10 10:34:06 重新编辑]
  Java面向对象编程-->图形用户界面(下)
  JavaWeb开发-->JSP中使用JavaBean(Ⅰ)
  JSP与Hibernate开发-->Java应用分层架构及软件模型
  Java网络编程-->创建非阻塞的HTTP服务器
  精通Spring-->Vue组件开发基础
  Vue3开发-->Vue CLI脚手架工具
  git 常用指令总结
  MyBatis+Spring 事务管理
  微服务架构模型
  使用Spring MVC多次读取请求Request Body的内容
  Spring MVC国际化
  Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)...
  RESTful API的最佳设计原则
  Spring Cloud 技术栈及架构一览
  RabbitMQ的用途、原理以及配置
  另一种缓存,Spring Boot 整合 Ehcache
  Kafka笔记整理
  Dubbo源码解析之SPI:扩展类的加载过程
  spring-boot-plus V1.4.0发布 集成用户角色权限部门管理 - g...
  Java-CORBA
  spring整合WebService入门详解
  更多...
 IPIP: 已设置保密
树形列表:   
[url=http://www.zhent.com]... nihaota 2022-10-28 19:56:23
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。