1、JSON 相关基础知识点总结(1)-阿里云开发者社区

开发者社区> hopegrace> 正文

1、JSON 相关基础知识点总结(1)

简介: JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript 编程语言的一个子集。
+关注继续查看

JSON定义

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript 编程语言的一个子集。 JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括CC++C#JavaJavaScriptPerlPython等)的习惯,这些特性使JSON成为理想的数据交换格式。

JSONJavaScript对象描述符号(object literal notation)的一个子集。

JSON的结构基于下面两点

1. "名称/"对的集合 不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)

2. 值的有序列表 多数语言中被理解为数组(array)

JSON 语法

AJAXasynchronous javascript and xml(异步javascriptxml),是指一种创建交互式网页应用的网页开发技术)是目前流行web开发技术,它利用客户端脚本向服务器发送请求,而服务器只检索这一请求代替以往检索整个页面的请求,同时服务器编译的数据量也减少了,从而使得服务器响应变得更快了。

这些请求通常检索格式化的xml来响应,然后JavaScript代码分析xml响应来显示结果,使得JavaScript代码复杂化了。这个时候新的事物出现了,JSON(JavaScript Object Notation),它能使JavaScript轻松的读取复杂的数据结构。

特点:

1、简单格式化的数据交换

2、易于人们的读写习惯

3、易于机器的分析和运行

4JavaScript中使用eval()方法可以很方便的读取 JSON数据

5JSON支持的语言ActionScript, C, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Lua. [6]

语法分析:

JSON可以用于封装数据,它是一种类似于C语言家族的语言,所以能很容易被C语言家族的语言分析

1、对象object包含在一对{}//类似定义结构体,有类型,有变量

2、对象的属性member使用[string : value]成对的表示,属性与属性之间用逗号隔开,如:

string : value , string : value

3、数组array包含在一对[]中,如:

[ elements ]

4、元素elements与元素之间用逗号隔开

elements , elements

5、元素值可具有的类型:

string, number, object, array, true, false, null

JSON

{"menu": {

"id": "file",

"value": "File:",

"popup": {

"menuitem": [

{"value": "New", "onclick": "CreateNewDoc()"},

{"value": "Open", "onclick": "OpenDoc()"},

{"value": "Close", "onclick": "CloseDoc()"}

]

}

}

}

XML

<menu id="file" value="File" >

<popup>

<menuitem value="New" onclick="CreateNewDoc()" />

<menuitem value="Open" onclick="OpenDoc()" />

<menuitem value="Close" onclick="CloseDoc()" />

</popup>

</menu>

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。[7]

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

值(value)可以是双引号括起来的字符串(string)、数值(number)truefalsenull、对象(object)或者数组(array)。这些结构可以嵌套。

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。字符串(string)与C或者Java的字符串非常相似。

数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

可以使用eval()函数的eval()方法调用JavaScript的编译器把JSON文本转变成对象。因为JSONJavaScript的一个确切的子集,编译器可以正确地解析JSON文本,然后生成一个对象结构。

eval函数的执行效率很高。然而,它能够编译、执行任何的JS程序,所以这样会有安全问题。在来源可信的时候才需要使用eval,这通常是服务器提供基础页面和JSON数据的web应用程序中的情形。而很多情况中,来源是不可信的。特别是永远都不要信任客户端。

如果关心安全的话,那最好是使用JSON解析器了(js脚本中有解析功能的函数)。JSON解析器只认可JSON文本,因此它比较安全。

JSON的字符串转换器(stringifier)则作相反的工作,它将JavaScript数据结构转换为JSON文本。JSON是不支持循环数据结构的,所以注意不能把循环的结构交给字符串转换器。[8]

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
网络资源-黑马程序员Java 知识——精华总结
获取更多资源Java帮帮IT资源分享网 一、黑马程序员—java 概述与基础知识.................................................................................6 1、何为编程?..............................................................
2184 0
收集Java面试题知识点(Java基础部分一)
一、Java基础部分 1、String 和StringBuffer、StringBuilder的区别 Java提供了:String、StringBuffer和StringBuilder,它们都是CharSequence的实现类,都可以作为字符串使用。
6096 0
Java必备基础知识点(超全)
Java必备基础知识点(超全)
12560 0
Flask基础知识点1
一、.基于装饰器的session访问控制,endpoint路由参数可以解决视图函数重名的情况。 下面我有一个简单的需求,就是一个网站有三个页面,分别是home、index和login界面,用户只有当登陆后才可以正常访问home和index页面,通过装饰器的方法来实现。
1025 0
【软考点点】计算机基础知识
<pre><span style="font-family:KaiTi_GB2312; font-size:18px"><span style="white-space:pre"> </span>距离软考越来越近,做了四套真题,进行了一次模拟,结果不是很理想。反思了一下,主要是做题讲题的时候只是针对题,而没有花时间去把教程上的知识点进行归纳整理。每次做,错的是一样类型的题目。所以,在考试之
1456 0
+关注
698
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载