您的位置:首页 > Web前端 > JavaScript

【json】慕课网json学习

2015-08-06 20:55 573 查看

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引号必须用双引号

[code]$json = json_encode($数组)


JSON转换成数组:

[code]$数组  = json_decode($数组,true)
//默认false,转换成对象类型


问:对象类型怎么更好的转换到JSON数据格式,以便交互?

实战一 : 使用js ajax初始化网站基本信息:

1、jquery使用;

2、javascript 调用jquery ajax 通信;

3、在js客户端解析 服务器端传来的Json 数据,转换成js json对象,

4、取得数据后进行解析在DOM中进行展示

[code]$("document").ready(function(){
    var urk = "server.php?inajax=1
    ……
});


[code]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;
}
?>


[code]登录实现方法:
1、存session
2、存数据库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: