部分参考:
JSON是什么鬼?
JSON不是一种编程语言,而是一种约定好的数据格式,全称为javascript object Notation,常用于前后端的交互。
但同时因为其优点,现在也用于于配置文件的书写,例如大部分程序员喜欢用Sublime Text就用JSON写了配置文件。
JSON是“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。
事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
因为JSON的广泛使用,再加上作者本人最近也在学习,便把学习笔记写到这个专栏上,希望能够帮到需要的人,若有错误欢迎指正
JSON如何表示
先来看JSON一种简单的表示:
{"username":123,"password":456}
在这个数据中,含有两个键,username和password,分别对于一个整形值123和456。
为了方便数据的交换,JSON也支持数据的嵌套使用,我们看一个复杂一点的例子:
{
"people":[
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
]
}
在这段JSON中,有一个键people,对于着的数据是一个数组,分别是三个JSON数据,每一个JSON中对应着三个键firstName、lastName和email
表示方式总结
{} 表示一个JSON对象
[] 表示一个数组
"" 双括号内表示的是一串字符串
123 整形数据,
123.1浮点型数据
true 布尔值
null 空
JSON支持嵌套使用,数据之间用逗号分隔开
javascript如何操作JSON
JSON作为javascript的原生数据格式,因此在js内不用调用额外的API或工具包就能使用
访问JSON
例如:
var json = {
"people":[
{"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
{"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
{"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
],
"authors": [
{"firstName": "Isaac","lastName": "Asimov","genre": "sciencefiction"},
{"firstName": "Tad","lastName": "Williams","genre": "fantasy"},
{"firstName": "Frank","lastName": "Peretti","genre": "christianfiction"}
]
};
var array = json.people;//从json对象中获取people属性,返回的是一个数组
var json_json = array[0];//返回的是people数组的第一个json对象
var value = json_json.firstName //返回值Brett
修改JSON
javascript能够通过直接赋值修改数据
例如:
json.people[0].firstName = "Jim"
前后端通信
上文讲述了JSON是什么鬼,下面简单讲一下是前后端是如何通信的。
前端向后端发送信息一般用GET或POST来进行通信,一般GET用于请求指定资源,其内容会凭借在URL后面,以?分割,各请求间用&连接
例如:
www.abc.com?id=1&page=1
而POST请求即不会出现在URL背后,其能够在HTTP的请求报文体内找到,有需要的童孩自己抓一下包就可以查看到POST的数据
如果你是用PHP,你可以用超全局变量$_GET[],$_POST[]获得用户的参数,如果你是写的CGI程序,则需要先获取这段参数,然后进行URL解码,再分割这些数据,按键和值构建你的语言所支持的数据结构。
一般而言,多是浏览器用以上两种方式向服务端发送数据,而服务端则收到浏览器的申请后,向浏览器返回JSON格式的数据,浏览器端只需要解释掉这段JSON后就能用js进行下一步操作了。
当然了,前后端的通信还有其他东西学习,我这里只是略微提及一下,自己也还需要进一步修炼。
更多的答案在我前一段时间提的问题 关于前后端JSON具体是如何通信的?
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。