【json】慕课网json学习

本文介绍了JSON的基本概念,包括其数据类型、格式规范及其优缺点,并通过实例展示了如何使用JSON进行数据交互,涵盖从PHP到JavaScript的数据处理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、存数据库
### 使用爬虫技术抓取大学平台数据 要使用爬虫技术抓取大学平台的数据,可以采用 Python 中常用的 Requests 或 Scrapy 库来完成这一任务。以下是具体方法和技术要点: #### 工具选择 在工具选择方面,可以根据需求复杂度决定使用 Requests 还是 Scrapy。如果只是简单的页面请求和数据提取,Requests 是更轻量级的选择;而如果是大规模、复杂的多页或多站点爬取,则推荐使用 Scrapy[^3]。 #### 数据抓取流程 1. **目标站分析** 首先需要对目标平台进行页结构分析,了解其 HTML 结构以及 API 接口(如果有)。这一步可以通过浏览器开发者工具查看页面元素及其对应的络请求路径[^1]。 2. **发送 HTTP 请求** 利用 `requests` 发送 GET/POST 请求获取所需页面的内容。例如: ```python import requests url = 'https://example.mocu.edu/course_list' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'} response = requests.get(url, headers=headers) content = response.text ``` 3. **解析响应内容** 借助 BeautifulSoup 或 lxml 解析返回的 HTML 页面,定位到感兴趣的字段如程名称、讲师信息、评分等。 ```python from bs4 import BeautifulSoup soup = BeautifulSoup(content, 'html.parser') courses = [] for item in soup.find_all('div', class_='course-item'): title = item.find('h3').text.strip() instructor = item.find('span', class_='instructor-name').text.strip() course_info = { 'title': title, 'instructor': instructor } courses.append(course_info) ``` 4. **存储与清洗数据** 将收集到的信息保存至文件或者数据库中,并执行必要的清理操作去除冗余字符或错误条目[^1]。 5. **动态加载处理** 如果遇到 JavaScript 动态渲染的情况,可能需要用到 Selenium 来模拟真实用户的浏览行为,从而解决无法直接通过静态 HTML 获取全部内容的问题[^3]。 6. **遵守法律规范** 在实施任何类型的 Web 爬行之前,请务必阅读并理解目标站的服务条款(TOS),确保自己的活动符合法律法规的要求[^2]。 ```python import json with open('courses.json', 'w') as f: json.dump(courses, f, ensure_ascii=False, indent=4) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值