Json简介
第一种类型是标量 scalar
第二种类型是序列 sequence
低三种类型是映射 mapping
JSON 即javascript object notation
JSON四个基本规则:
1、并列数据间用逗号 , 分隔;
2、映射用冒号 : 表示;
3、并列数据的结合(数组)用方括号 [ ] 表示;
4、映射的结合(对象)用大括号 {} 表示;
Json优点:
简洁,易于读写,占用带宽小;支持多语言;
Json缺点:
1、要求字符集必须是Unicode,受约束性强;
2、语法过于严谨,必须遵循JSON语法四个原则;
对比
XML
标准通用标记语言 SGML的子集, 适合web传输,结构化数据;
JSON
Serialize
序列化变量;
Array()
基本数据类型,不能用于数据的传输和交替;
JSON的使用:
JSON和serialize数据格式的异同:
同:
1、都是把其他数据类型转换成一个可以传输的字符串
2、都是结构性数据
异:
1、serialize序列化后的数据格式保存数据原有类型
2、JSON数据格式更简洁
PHP中操作JSON的重要函数;
加密: Json_encode()
解密: Json_deconde()
什么是索引数组和关联数组:
索引数组: 没有明确key的数组;
关联数组:明确key作为键值对;
数组到JSON数据格式的转换
JSON引号必须用双引号
$json = json_encode($数组)
JSON转换成数组:
$数组 = json_decode($数组,true)
//默认false,转换成对象类型
问:对象类型怎么更好的转换到JSON数据格式,以便交互?
实战一 : 使用js ajax初始化网站基本信息:
1、jquery使用;
2、javascript 调用jquery ajax 通信;
3、在js客户端解析 服务器端传来的Json 数据,转换成js json对象,
4、取得数据后进行解析在DOM中进行展示
$("document").ready(function(){
var urk = "server.php?inajax=1
……
});
html文件:
<html>
<head>
<title>第二个实战</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$("document").ready(function() {
var url = "shizhan2.php";
var data = {"do": "first"};
$.getJSON(url, data, function(res) {
$("#username").val(res.username);
$("#password").val(res.password);
});
var data = {"do": "second"};
$.getJSON(url, data, function(res) {
$("#members").val(res.third.members.username);
});
var data={"do":"third"};
$.getJSON(url,data,function(res){
$("#address").val(res.address[1].username);
});
});
</script>
</head>
<body>
<h2>一维数组巩固练习</h2>
<input type="text" name="username" id="username"/><br/>
<input type="password" name="password" id="password" />
<h2>多维数组实战(展示一组会员信息)</h2>
<textarea id="members"></textarea>
<h2>对象实战(放一组地址信息)</h2>
<textarea id="address"></textarea>
</body>
</html>
----------
服务器端
<?php
//1
$member['username'] = "mukewang";
$member['password'] = "mukewang";
$do = $_REQUEST['do'];
//2
$members['1']['username'] = "幕课网";
$members['1']['password'] = "mukewang";
$members['2']['username'] = "袁明贺";
$members['2']['password'] = "haha";
$members['2']['address'] = "北京市朝阳区";
$members['third']['members']['username']="我是第三个用户名";
//3
class addressClass {
public $address = array();
public function setAddress($array) {
$this->address = $array;
}
public function getAddress() {
return $this->address;
}
}
$addressObj = new addressClass();
$addressObj->setAddress($members);
switch ($do) {
case "first":
echo json_encode($member);
break;
case "second":
echo json_encode($members);
break;
case "third":
echo json_encode($addressObj);
break;
}
?>
登录实现方法:
1、存session
2、存数据库