抖音弹幕游戏开发之第6集:解析JSON数据·优雅草云桧·卓伊凡

简介: 抖音弹幕游戏开发之第6集:解析JSON数据·优雅草云桧·卓伊凡

《抖音弹幕游戏开发专栏》是优雅草建立的专栏,由优雅草资深开发工程师云桂提供实战教学配对发布有对应的视频教程,以下内容为技术文稿,卓伊凡辅助。
抖音弹幕游戏开发之第6集:解析JSON数据·优雅草云桧·卓伊凡

第6集:解析JSON数据

什么是JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,几乎所有编程语言都支持。

{
    "name": "张三",
    "age": 25,
    "city": "北京"
}

在Python中,JSON格式和字典(dict)非常相似。

导入json库

import json  # Python内置,无需安装

解析JSON数据

修改 on_message 函数:

def on_message(ws, message):
    try:
        data = json.loads(message)
        print(f"解析后的数据: {data}")
    except json.JSONDecodeError as e:
        print(f"数据解析失败: {e}")

关键点

  • json.loads(message) - 把JSON字符串转换成Python字典
  • try-except - 异常处理,解析失败不会崩溃

提取关键字段

使用 get() 方法安全地提取字段:

def on_message(ws, message):
    try:
        data = json.loads(message)
        msg_type = data.get('msgType', '')
        name = data.get('name', '')
        print(f"消息类型: {msg_type}, 用户: {name}")
    except json.JSONDecodeError as e:
        print(f"数据解析失败: {e}")

为什么用get()而不是data['msgType']?

  • get() 更安全,字段不存在时返回默认值
  • data['key'] 字段不存在会抛出 KeyError 异常

根据消息类型显示不同信息

def on_message(ws, message):
    try:
        data = json.loads(message)
        msg_type = data.get('msgType', '')
        name = data.get('name', '')
        
        if msg_type == '弹幕':
            content = data.get('content', '')
            print(f"[弹幕] {name}: {content}")
        elif msg_type == '礼物':
            gift_name = data.get('giftName', '')
            gift_count = data.get('giftCount', 0)
            print(f"[礼物] {name} 送了 {gift_count} 个 {gift_name}")
        else:
            print(f"[{msg_type}] {name}")
            
    except json.JSONDecodeError as e:
        print(f"数据解析失败: {e}")

输出效果

[弹幕] 张三: 主播好厉害!
[礼物] 李四 送了 1 个 玫瑰花
[点赞] 王五
[弹幕] 赵六: 666

常见问题

问题

答案

为什么用try-except?

网络数据可能不完整或格式错误

json.loads和json.load区别?

loads解析字符串,load解析文件

想提取更多字段?

查看接口文档,用get方法提取

本集总结

  • 学习JSON格式基础知识
  • 使用json.loads解析JSON数据
  • 用get方法安全提取字段
  • 根据消息类型显示不同信息
  • 添加异常处理

下一集:识别不同类型的消息

目录
相关文章
|
机器学习/深度学习 安全 网络安全
云安全中心:病毒查杀
云安全中心病毒查杀功能使用阿里云机器学习病毒查杀引擎和实时更新的病毒库,提供丰富的系统扫描项,覆盖持久化启动项、活动进程、内核模块、敏感目录、SSH后门公钥等系统薄弱模块,可有效清理服务器的各类恶意威胁。本文介绍如何使用病毒查杀功能。
2154 2
|
11月前
|
存储 机器学习/深度学习 人工智能
基于Memory Bank的Cursor长会话记忆内存库理论研究与实践
本文探讨了Memory Bank在解决大模型长期记忆问题中的应用,特别是在Cursor编程助手中的实践。Memory Bank通过分层存储、动态更新和精准检索机制,有效克服了传统模型在多轮对话中记忆丢失的问题。文章详细介绍了三种工具:Codelf、cursor-memory-bank-rules.md和One-Shot Memory Bank for Cursor的原理、配置及效果评测。其中,cursor-memory-bank-rules.md表现较好,适合项目梳理,但实际开发中的效果仍有待验证。
2723 11
基于Memory Bank的Cursor长会话记忆内存库理论研究与实践
|
3月前
|
网络安全
抖音弹幕游戏开发之第4集:第一个WebSocket连接·优雅草云桧·卓伊凡
《抖音弹幕游戏开发专栏》由优雅草出品,云桂主讲、卓伊凡辅助。本集详解WebSocket连接实战:创建main.py、理解on_open/on_message/on_close/on_error四大回调函数,并提供完整可运行代码与常见问题排障指南。(239字)
247 7
|
JavaScript 前端开发 Web App开发
带你读《Three. js开发指南: 基于WebGL和HTML5在网页上渲染 3D图形和动画(原书第3版)》之一:使用Three.js创建你的第一个三维场景
本书将介绍如何直在浏览器中创建漂亮的3D场景和动画,并且充分发挥WebGL和现代浏览器的潜能。首先介绍基本概念和基础组件,然后通过逐渐扩展示例代码逐步深讲解更多高级技术。在本书中读者将学到如何从外部加载3D模型和具有真实效果的材质纹理、学习使用Three.js提供的摄像机组件来实现在3D场景中飞行和走动、如何将HTML5视频和画布作为材质贴在3D模型表面。此外还将学习变形动画和骨骼动画,甚至还会涉及在场景中使用物理模拟的方法,例如重力、碰撞检测等等。
|
4月前
|
人工智能 算法 程序员
程序员在线直播“纯编程”,是最没有前途、性价比最低的一种内容形态-卓伊凡
程序员在线直播“纯编程”,是最没有前途、性价比最低的一种内容形态-卓伊凡
92 7
|
3月前
|
JSON 数据格式 Python
抖音弹幕游戏开发之第5集:接收第一条弹幕消息·优雅草云桧·卓伊凡
《抖音弹幕游戏开发专栏》由优雅草云桂主讲、卓伊凡辅助,聚焦实战开发。本集详解如何通过WebSocket接收首条弹幕消息:添加并注册`on_message`回调函数,演示弹幕、礼物、点赞等消息类型解析,并提供完整代码与常见问题解决方案。(239字)
99 5
|
3月前
|
人工智能 JSON 数据格式
抖音弹幕游戏开发之第1集:课程介绍与环境准备·优雅草云桧·卓伊凡
《抖音弹幕游戏开发专栏》由优雅草出品,云桂主讲、卓伊凡辅助,20集Python实战教程。零基础入门,教你用websocket-client监听弹幕/礼物,pyautogui模拟操作,实现“发弹幕→角色跳跃”“送花→视角旋转”等趣味互动效果。
201 7
|
3月前
|
Python
抖音弹幕游戏开发之第11集:礼物触发功能·优雅草云桧·卓伊凡
《抖音弹幕游戏开发专栏》由优雅草云桂主讲、卓伊凡辅助,第11集详解礼物触发功能:解析giftName等核心字段,设计玫瑰摇摆、爱心跳跃、火箭旋转等规则,并用Python实现带次数限制的实时交互效果。
182 11
|
3月前
|
测试技术 Python
抖音弹幕游戏开发之第10集:整合 - 弹幕触发键盘操作·优雅草云桧·卓伊凡
《抖音弹幕游戏开发专栏》由优雅草云桂主讲、卓伊凡辅助,本集为第10集“整合:弹幕触发键盘操作”,详解WebSocket与pyautogui联动,实现弹幕内容(如“跳”“前进”)自动触发对应键盘按键,含完整代码、规则表及实测步骤。(239字)
270 10
|
3月前
|
JSON 数据格式 C++
抖音弹幕游戏开发之第3集:WebSocket基础知识·优雅草云桧·卓伊凡
《抖音弹幕游戏开发专栏》由优雅草出品,云桂主讲、卓伊凡辅助。本集详解WebSocket核心知识:实时双向通信原理、与HTTP对比、工作流程及抖音弹幕场景应用,并解析服务地址、JSON数据格式与6类消息类型,为实战开发夯实基础。(239字)
170 5

热门文章

最新文章