【json】慕课网json学习

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、存数据库
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值