首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信小程序 接口调用讲解 (AccessToken、小程序码登录)

微信小程序 接口调用讲解 (AccessToken、小程序码登录)

作者头像
泥豆芽儿 MT
发布于 2022-05-10 13:58:35
发布于 2022-05-10 13:58:35
19.7K00
代码可运行
举报
运行总次数:0
代码可运行

前言

  • 当前对于网站项目的开发,针对于客户使用的 小程序是最为主要的 在此整理几个使用频率高的接口 方便开发人员的后期参考,以及对功能的快速实现

重要分享接口 梳理

下面,整理出实际业务中,使用频率较高的接口,做下分享

1 登录信息获取

♘链接 - 开放文档 ->>> 小程序登录

  • 【场景描述】 当用户在我们开发的小程序中,点击授权登录时 我们可以通过微信官方提供的登录能力,方便地获取用户 身份标识, 从而将微信用户与我们的产品数据进行绑定,快速建立起小程序内的用户体系

之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份

  • 登录流程时序如下:

简而言之,我们要获取微信用户的唯一标识 OpenID ,关联自己的业务

接口描述
  • 【请求地址】:【GET】 https://api.weixin.qq.com/sns/jscode2session
  • 【请求参数 】

参数名

必选

类型

说明

appid

string

小程序唯一凭证,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页面获得

secret

string

小程序唯一凭证密钥,即 AppSecret,获取方式同 appid

js_code

string

登录时获取的 code (小程序端通过 wx.login 接口获得临时登录凭证 code)

grant_type

string

授权类型,此处只需填写 authorization_code

  • 【返回参数】

参数名

类型

说明

openid

string

用户唯一标识

session_key

string

会话密钥 session_key 是对用户数据进行 加密签名 的密钥

unionid

string

用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回

errcode

string

错误码: -1、0、40029、 45011、 40226 (具体说明,请阅读 接口文档)

errmsg

string

错误信息

示例代码
  • 【PHP 示例代码】 (😦 tip: 公共方法 do_curl_get_request() 可见附录)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 		$url = 'https://api.weixin.qq.com/sns/jscode2session';
        $param = [
            'appid' => 'xxxxxxx',
            'secret' => 'xxxxxxxxxxxxxxxx',
            'js_code' => 'CODE',// 小程序端通过 wx.login 接口获得临时登录凭证 code
            'grant_type' => 'authorization_code',
        ];
        $res = do_curl_get_request($url,$param);
[提示]
  1. 小程序登录成功后,将登录信息(openid、session_key)保存下来 即,保存登录令牌Token,方便用户登录状态的维持 在接下来的获取接口,有令牌就可以 访问,没有的话就不能访问
  • 对于为什么要换取 Token,如何使用 Token,可以参考下面的两篇文章:

登录与令牌 小程序用户怎么拿到 token 的? 微信小程序登录换取 token

  1. 如果,需要获取微信用户的 昵称,地址、微信头像等信息 可以参考接口 —— 开放数据校验与解密 进行有效信息的获取

接口如果涉及敏感数据(如wx.getUserInfo当中的 openId 和 unionId), 需要对接口返回的加密数据(encryptedData) 进行对称解密

  • 最终解密获得的 json 数据如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "openId": "OPENID",
    "nickName": "NICKNAME",
    "gender": GENDER,
    "city": "CITY",
    "province": "PROVINCE",
    "country": "COUNTRY",
    "avatarUrl": "AVATARURL",
    "unionId": "UNIONID",
    "watermark":
    {
        "appid":"APPID",
        "timestamp":TIMESTAMP
    }
}

一般用于,对新注册微信用户的绑定记录,方便我们在自己网站业务中的用户识别操作

2 接口调用凭证 AccessToken

♘链接 - 开放文档 ->>> auth.getAccessToken

  • 【场景描述】 首先,要明确一点 此处提到的access_token ,是 作为 小程序 全局唯一 后台接口调用凭据 而对于服务端的接口来说 绝大部分的服务,都需要使用 access_token,开发者需要进行妥善保存
♦ 接口描述
  • 【请求地址】:【GET】 https://api.weixin.qq.com/cgi-bin/token
  • 【请求参数 】

参数名

必选

类型

说明

grant_type

string

填写 "client_credential"

appid

string

小程序唯一凭证,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页面获得

secret

string

小程序唯一凭证密钥,即 AppSecret,获取方式同 appid

正常时返回: {"access_token":"ACCESS_TOKEN","expires_in":7200}

错误时返回:{"errcode":40013,"errmsg":"invalid appid"}

♦ 示例代码
  • 【PHP 示例代码】 (😦 tip: 公共方法 do_curl_get_request() 可见附录)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
		$url = 'https://api.weixin.qq.com/cgi-bin/token';
        $param = [
            'grant_type' => 'client_credential',
            'appid' => 'wxexxxxxxxx',
            'secret' => 'f6eebxxxxxxxxxxxxxxxxxxxxx'
        ];
        //返回数据,自行提取保存
        $res = do_curl_get_request($url,$param);
[提示]

如果没有 redis,也可存储在 mysql 数据表,服务器session、甚至 file 文件中,只要保证读取时间有效即可

3 小程序码 登录

♘链接 - 开放文档 ->>> awxacode.getUnlimited

  • 【场景描述】 以实际开发场景为例: 为了便于商家登录PC端,将原来的 短信验证码登录 替换为 微信小程序码 扫码登录 商家扫码后,微信端会跳入小程序页面, 同时,PC端会自动进入网站,简化登录流程,提高用户体验
  • 整体流程演示图:
♦ 接口描述
  • 请求地址: 【POST】 https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
  • 【请求参数 】

参数名

必选

类型

说明

access_token

string

接口调用凭证

scene

string

场景信息,最大32个可见字符,只支持数字,大小写英文以及部分特殊字符 以我的代码实现为例,设定的字符串为: pc_code=$pc_code

page

string

页面 page,例如 pages/index/index,根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面

注:对于参数 scene,其中的 pc_code 值,可以在 PC 端请求小程序码时,随机生成,可用时间戳+随机数,后续的逻辑中,会以此 pc_code 判断哪个码扫码登录成功

  • 【开发思路】
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1. 用户在 PC 端请求显示 小程序码时,需要一个传一个参数 pc_code (可用时间戳+随机数)
2. 后台,curl 调用微信服务接口,获取小程序码,返回到 PC 端显示
3. 后台将这个 pc_code,进行 redis 存储,状态 status 设定为 未登录状态
	$value = ['status'=>0,'create_time' => time()];
    $redis->hSetNx($cache_key_pc_scan_mini_code,$pc_code)
4. 如果,小程序检测到登录,
	要更新 redis, 状态 status 设定为 已登录状态
	
5. PC端,设定一个轮询 js (条件允许的话,可以考虑使用 websocket)
	每秒查看 status 是否失效、已登录
	如果失效(5分钟),要重新获取新的 小程序码,或引导用户刷新页面
	如果登录成功,根据返回的 用户Token,进行登录后业务处理
6. 设计一个计划任务,处理已过时的 小程序码,做好交互
示例代码
  • 生成 小程序码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    /**
     * 获取不受限制的小程序二维码
     * @param $page string 页面路径
     * @param $scene string 携带参数
     * @param $width int 宽度
     * @param $color array 颜色
     * @param $isHyaline boolean 是否透明底色
     * @return string
     *
     * @throws Exception
     */
    public function unlimitedAcode(string $scene, string $page='', int $width=50, array $color=[], bool $isHyaline=false)
    {
        $url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit';
        $query = [
          'access_token' => $this->accessToken()
        ];

        $data = [
            'scene' => $scene,
            'width' => $width,
            'auto_color' => $color ? false : true,
            'is_hyaline' => $isHyaline
        ];
        if ($page) {
            $data['page'] = $page;
        }
        if (!$data['auto_color']) {
            $data['line_color'] = [
                'r' => $color[0],
                'g' => $color[1],
                'b' => $color[2]
            ];
        }

        $client = new Client([
            'query' => $query,
            'body' => json_encode($data)
        ]);
        $res = $client->post($url);
        return $res->getBody()->getContents();
    }
  • 更新 商家PC端 小程序码状态信息
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        /**
     * 更新 商家PC端 小程序码状态信息
     * @param int $opTag 1:获取小程序码;2:检测小程序码,扫码状态;3:商家小程序端,登录后的缓存更新
     * @param string $pc_code PC端,标识码
     * @param string $scan_open_id $opTag=3 时,需要传参
     * @return array
     */
    public static function opCacheKeyScanMiniCode($opTag = 1,$pc_code = '',$scan_open_id = ''){
        $cache_key_pc_scan_mini_code = config('mz.pc_scan_mini_code');
        $redis = redis();

        if($opTag === 1){
            //获取小程序码后,进行 redis 存储
            $value = ['status'=>0,'create_time' => time()];
            $redis->hSetNx($cache_key_pc_scan_mini_code,$pc_code,json_encode($value,JSON_UNESCAPED_UNICODE));
        }elseif ($opTag === 2){
            //此时为,获取小程序码 状态信息
            $scanVal  = $redis->hget($cache_key_pc_scan_mini_code,$pc_code);
            $scan_open_id = '';
            if ($scanVal){
                $arr_scanVal = json_decode($scanVal,true);
                $scan_status =$arr_scanVal['status']??0;
                if ($scan_status == 0){
                    //判断是否已过期
                    $create_time =$arr_scanVal['create_time']??0;
                    if ((time()-$create_time)> 300){
                        //暂定 5分钟后 失效 (小程序码已过期) 
                        $scan_status = 2;
                        //TODO 可设计一个计划任务,剔除已超时的键
                    }
                }else{
                    $scan_open_id =$arr_scanVal['open_id']??'';
                }
            }else{
                //为了前端显示的判断,也设定为 失效
                $scan_status = 2;
            }
            return [$scan_status,$scan_open_id];
        }elseif ($opTag === 3){
            //此时,小程序端,登录成功后,更新用户信息
            $scanVal  = $redis->hget($cache_key_pc_scan_mini_code,$pc_code);
            if ($scanVal){
                $arr_scanVal = json_decode($scanVal,true);
                $arr_scanVal['status'] = 1;
                $arr_scanVal['open_id'] = $scan_open_id;
                $redis->hSet($cache_key_pc_scan_mini_code,$pc_code,json_encode($arr_scanVal,JSON_UNESCAPED_UNICODE));
            }
        }
    }
    /**
     * //TODO 考虑,去除已登录、超时的键
     * 去除 超时的键
     */
    public static function updateCacheKeyScanMiniCode(){
        $cache_key_pc_scan_mini_code = config('mz.pc_scan_mini_code');
        $redis = redis();

        $list = $redis->hGetAll($cache_key_pc_scan_mini_code);
        foreach ($list as $key => $val){
            $arr_cache_val  = json_decode($val,true)??[];
            $create_time = $arr_cache_val['create_time']??0;
            if ((time() - $create_time) > 300){
                //此为 设定超时的键 5分钟
                $redis->hDel($cache_key_pc_scan_mini_code,$key);
            }
        }
        return [true,'PC端登录小程序码,更新成功'];
    }
  • 接口返回
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "code": 200, 
    "msg": "小程序码获取成功!", 
    "data": {
        "mini_code": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD..."
    }
}
[提示]
  • ① 小程序码登录优势
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1. 使用小程序码登录,用户真正登录行为发生在小程序上,同步给网页的是登录态,
    相比于微信二维码登录同步给网页临时 code,
    然后在重定向到业务登录后台换取登录态方式,
    小程序码方式少了一次请求,带来更佳用户体验

2. 整体登录流程,UI更可控,也便于登录问题定位
  • 【经验建议】 对于前面提到的 pc_code 值的设定建议
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 	对于 pc_code 值,如果使用了 “时间戳+随机数”:
 
 	实际上,很可能会被恶意人员暴力破解,简单的就猜到了我们的实现逻辑,从而截取数据,分析出我们网站的登录数据
 	此时,可以考虑:
 	对这里的 pc_code 值做加密操作,
 	—— 设计加密逻辑,每隔一段时间加密参数变动即可,避免恶意破解
  • ③. 【经验建议】 对于页面使用 js 轮询获取 小程序码扫码状态的建议
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	相对来说,设计为简单的 js 轮询方式
	无疑是对 资源请求的一种浪费,虽然接口中的代码逻辑耗时可忽略
	但,难免遇到恶意份子的 暴力请求情况

	首先,一种最简单的优化方式:
				—— 轮询时间缩短,比如一分钟,如此一来直接在用户行为上,降低了无效请求
				
	其次,可以考虑比较常用的 websocket 长链接方式:
				—— 将原来的被动请求,变为主动触发,减少资源的请求浪费 (听起来就高大上一些)

参考文章:

♘ 通过微信小程序实现扫码登录 ♘【网页版】使用小程序码登录 ♘ 通过扫小程序码实现网站登录功能

附录

  • 公共方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * CURL-get请求
 * @param string $url 请求的url
 * @param array $param 请求的参数
 * @param string $output 输出格式
 * @param int $timeout 超时时间
 * @return mixed 数组形式
 */
function do_curl_get_request($url = '', $param = [],$output = 'json', $timeout = 10)
{
    $ch = curl_init();
    if (is_array($param)) {
        $url = $url . '?' . http_build_query($param);
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // 允许 cURL 函数执行的最长秒数
    $data = curl_exec($ch);
    curl_close($ch);
    if ($output == 'json') {
        $json = json_decode($data , true);
        return $json ?? $data ;
    } else {
        return $data ;
    }
}

/**
 * CURL-post请求
 * @param string $url 请求的url地址
 * @param array $param 请求的参数
 * @param array $header
 * @param string $output 输出格式
 * @param int $timeout 超时时间
 * @return mixed
 */
function do_curl_post_request($url = '', $param = [], $header = [], $output = 'json',$timeout = 10)
{
    $ch = curl_init();
    if (is_array($param)) {
        $urlparam = http_build_query($param);
    } else if (is_string($param)) { //json字符串
        $urlparam = $param;
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); //设置超时时间
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //返回原生的(Raw)输出
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_POST, 1); //POST
    curl_setopt($ch, CURLOPT_POSTFIELDS, $urlparam); //post数据
    if ($header) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    }
    $data = curl_exec($ch);
    curl_close($ch);
    if ($output == 'json') {
        $json = json_decode($data , true);
        return $json ?? $data ;
    } else {
        return $data ;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
技术学习:Python(03)|欲先善其事,必先利其器(JSON)一
🎈1.2类型转换对照表 python 中类型向 json 类型的转化对照表,先记住这张表哈:
艾特
2023/10/10
2650
JSON解析-python实现
本文从以下几个方面进行讨论: 1. JSON的基本概念 2. python解析JSON 3. 参考
py3study
2020/01/03
1.3K0
python第三方库系列之一--json
    1. 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。
py3study
2020/01/09
1.7K0
Python下的XML文件处理与远程调用实践
XML是一种用于存储和传输数据的标记语言,具有自我描述性和可扩展性的特点。它使用标签和属性来定义数据的结构,被广泛应用于配置文件、Web服务通信和数据交换等领域。
一键难忘
2024/03/16
3570
Python中的xmltodict库:轻松处理XML数据,Web前端、配置文件必备知识
xmltodict是一个Python库,它提供了将XML数据转换为Python字典(以及将字典转换回XML)的功能。这个库非常适合处理需要解析或生成XML数据的应用程序,如Web服务客户端、配置文件读取器和数据转换器等。
小白的大数据之旅
2024/11/20
3260
Python xml 与 dict 相互转化
xml 是一种标记语言,本质是字典,因此如果可以将 xml 转换为字典,并且从字典转换成 xml 则可以为所欲为。
为为为什么
2024/06/06
2680
Unity 数据读取|(四)Json文件解析(Newtonsoft.Json ,Litjson,JsonUtility,SimpleJSON)
游戏开发小Y
2024/01/18
2.3K0
python实用小工具介绍
一、秒级启动一个HTTP下载服务器 在实际工作中,时不时会有这样的一个需求:将文件传给其他同事。将文件传给同事本身并不是一个很繁琐的工作,现在的聊天工具一般都支持文件传输。但是,如果需要传送的文件较多,那么,操作起来就会比较麻烦。此外,如果文件在远程的服务器上,你要将文件传给同事,则需要先将远程服务器的文件下载到本地,然后再通过聊天工具传给同事。再或者,你并不是特别清楚要传哪几个文件给同事,所以,你们需要进行来回的交流。交流的时间成本是比较高的,会降低办事效率。此时,你们需要更加高效的方法。这个时候,如果你知道Python内置了一个下载服务器就能够显著提升效率了。例如,你的同事要让你传的文件位于某一个目录下,那么,你可以进入这个目录,然后执行下面的命令启动一个下载服务器: 本地有个一文件夹,想共享给局域网同事下载一些里面的文件,可以使用python的如下命令。 • python2的用法如下: python -m SimpleHTTPServer • python3的用法如下: python3 -m http.server --cgi 以上两种方法默认端口8000,可以制定端口,例如指定端口45678: python -m SimpleHTTPServer 45678 python3 -m http.server --cgi 45678
py3study
2020/01/07
6920
工欲善其事必先利其器:用什么写Python?
通常来说,每个程序员都有自己趁手的兵器:代码编辑器。你要是让他换个开发环境,恐怕开发效率至少下降三成。然而,每个人对编辑器的喜好各不相同,甚至引发出诸如“神的编辑器”与“编辑器之神”这种信仰之争。但也正由此可见,个性化的编辑器对于一个程序员的重要性。
Crossin先生
2018/07/24
8020
工欲善其事必先利其器:用什么写Python?
【Python】我的Python学习笔记【1】【using Python 2】
简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
zhaokang555
2023/10/17
1550
JSON入门
JSON:JavaScript Object Notation 【JavaScript 对象表示法】
全栈程序员站长
2022/07/20
3720
JSON入门
python 程序员进阶之路:从新手到高手的100个模块
在知乎和CSDN的圈子里,经常看到、听到一些 python 初学者说,学完基础语法后,不知道该学什么,学了也不知道怎么用,一脸的茫然。近日,CSDN的公众号推送了一篇博客,题目叫做《迷思:Python 学到什么程度可以面试工作?》,真实反映了 python 程序员在成长过程中的一些困惑。
全栈程序员站长
2022/07/25
4440
预备小菜:Python入门之模块和库
再将众多具有相关功能的模块文件结构化组合形成包,具有相关功能模块和包的集合就是库。这也是Python的一大特色,因为它具有强大的标准库、第三方库和自定义模块。这些库和模块提供丰富的功能,包括后续学习到的NumPy和Pandas.
马拉松程序员
2023/02/24
3310
预备小菜:Python入门之模块和库
几个提高工作效率的Python内置小工具
專 欄 ❈本文作者:赖明星 博客地址: https://www.zhihu.com/people/mingxinglai❈ 在这篇文章里,我们将会介绍4个Python解释器自身提供的小工具。这些小工具在笔者的日常工作中经常用到,减少了各种时间的浪费,然而,却很容易被大家忽略。每当有新来的同事看到我这么使用时,都忍不住感叹,原来Python还隐藏了这么好用的功能。下面就来看一下Python自带的几个小工具 一、1秒钟启动一个下载服务器 在实际工作中,时不时会有这样的一个需求:将文件传给其他同事。将文件传给同事
Python中文社区
2018/01/31
1.2K0
几个提高工作效率的Python内置小工具
JSON就是这么简单
什么是JSON JSON:JavaScript Object Notation 【JavaScript 对象表示法】 JSON 是存储和交换文本信息的语法。类似 XML。 JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言。 为什么需要JSON 提到JSON,我们就应该和XML来进行对比。XML也是一种存储和交换文本信息的手段。那么JSON好在哪里呢?? JSON 比 XML 更小、更快,更易解析。 javaScript原生支持JSON,解析速度会很快 XML解析成DOM对象的时
Java3y
2018/03/15
8060
JSON就是这么简单
JSON 基本使用
JSON常被拿来与XML做比较,因为JSON 的诞生本来就多多少少要有取代XNL的意思。相比 XML,JSON的优势如下:
兮动人
2021/06/11
1.5K0
JSON 基本使用
Python基础学习
概念:计算及是根据指令操作数据的设备,具有功能性和可编程性。 发展:参照摩尔定律(Moore’s Law),表现为指数方式。 程序设计:计算及可编程性的体现。 程序设计语言:一种用于交互的人造语言。 编程语言的执行方式:编译和解释。 编译:将源代码一次性转换成目标代码的过程。 解释:将源代码逐条转换成目标代码同时逐条运行的过程。 静态语言:使用编译执行的编程语言,如C、C++、Java 脚本语言:使用解释执行的编程语言,如Python,JavaScript,PHP 程序的基本编写方法(IPO):Input输入 Process处理 Output输出
LeviMaster
2021/06/15
2.5K0
JSON 基本使用
JSON常被拿来与XML做比较,因为JSON 的诞生本来就多多少少要有取代XNL的意思。相比 XML,JSON的优势如下:
兮动人
2021/05/31
1.7K0
JSON 基本使用
鸿蒙NEXT版仿微信聊天App的解析JSON串
上一节我们利用三方库SocketIO实现了在设备间收发文本消息,那么对于更复杂的消息包,就不仅是简单的一串文本,而是采用JSON格式封装的字符串。鉴于JSON格式是很常见的数据格式,这里就不再啰嗦了,如果是纯新手不了解JSON格式的话,建议参考《Android Studio开发实战:从零基础到App上线(第3版)》一书的“13.2.1 移动数据格式JSON”。
aqi00
2024/11/25
1510
鸿蒙NEXT版仿微信聊天App的解析JSON串
Python -- Json 数据
JSON:JavaScriptObjectNotation(JavaScript 对象表示法)
py3study
2020/01/14
1.7K0
相关推荐
技术学习:Python(03)|欲先善其事,必先利其器(JSON)一
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档