DeepSeek教unity------MessagePack-05
动态反序列化
当调用 `MessagePackSerializer.Deserialize<object>` 或 `MessagePackSerializer.Deserialize<dynamic>` 时,二进制数据中存在的任何值都将被转换为基本值,即 bool、char、sbyte、byte、short、int、long、ushort、uint、ulong、float、double、DateTime、string、byte[]、object[]、IDictionary<object, object>。
/****************************************************文件:Test_06.cs作者:Edision日期:#CreateTime#功能:示例6:动态反序列化
*****************************************************/using MessagePack;
using MessagePack.Resolvers;
using UnityEngine;public class Test_06 : MonoBehaviour
{public void Test(){// 示例数据.var model = new DynamicModel { Name = "foobar", Items = new[] { 1, 10, 100, 1000 } };var blob = MessagePackSerializer.Serialize(model, ContractlessStandardResolver.Options);使用dynamic类型进行反序列化时,Unity环境未能正确处理C#的动态特性。//var deserializedModel = MessagePackSerializer.Deserialize<dynamic>(blob, ContractlessStandardResolver.Options);//Debug.Log(deserializedModel["Name"]); // foobar//Debug.Log(deserializedModel["Items"][2]); // 100// 使用具体类型进行反序列化.var deserializedModel = MessagePackSerializer.Deserialize<DynamicModel>(blob, MessagePack.Resolvers.ContractlessStandardResolver.Options);Debug.Log(deserializedModel.Name); // 输出: foobarDebug.Log(deserializedModel.Items[2]); // 输出: 100}[MessagePackObject]public class DynamicModel{[Key(0)]public string Name { get; set; }[Key(1)]public int[] Items { get; set; }public DynamicModel(){// 默认构造函数}public DynamicModel(string name, int[] items){Name = name;Items = items;}public override string ToString(){return $"Name: {Name}, Items: [{string.Join(", ", Items)}]";}}
}
Object 类型 序列化
StandardResolver 和 ContractlessStandardResolver 可以序列化对象/匿名类型对象。
/****************************************************文件:Test_06.cs作者:Edision日期:#CreateTime#功能:示例6:动态反序列化
*****************************************************/using MessagePack;
using MessagePack.Resolvers;
using UnityEngine;public class Test_06 : MonoBehaviour
{public void Test(){// 示例数据.var model = new DynamicModel { Name = "foobar", Items = new[] { 1, 10, 100, 1000 } };var blob = MessagePackSerializer.Serialize(model, ContractlessStandardResolver.Options);使用dynamic类型进行反序列化时,Unity环境未能正确处理C#的动态特性。//var deserializedModel = MessagePackSerializer.Deserialize<dynamic>(blob, ContractlessStandardResolver.Options);//Debug.Log(deserializedModel["Name"]); // foobar//Debug.Log(deserializedModel["Items"][2]); // 100// 使用具体类型进行反序列化.var deserializedModel = MessagePackSerializer.Deserialize<DynamicModel>(blob, ContractlessStandardResolver.Options);Debug.Log(deserializedModel.Name); // 输出: foobarDebug.Log(deserializedModel.Items[2]); // 输出: 100var objects = new object[] { 1, "aaa", new ObjectFieldType { Anything = 9999 } };var bin = MessagePackSerializer.Serialize(objects);// [1,"aaa",[9999]]Debug.Log(MessagePackSerializer.ConvertToJson(bin));// Support anonymous Type Serializevar anonType = new { Foo = 100, Bar = "foobar" };var bin2 = MessagePackSerializer.Serialize(anonType, ContractlessStandardResolverAllowPrivate.Options);// {"Foo":100,"Bar":"foobar"}Debug.Log(MessagePackSerializer.ConvertToJson(bin2));}[MessagePackObject]public class DynamicModel{[Key(0)]public string Name { get; set; }[Key(1)]public int[] Items { get; set; }public DynamicModel(){// 默认构造函数}public DynamicModel(string name, int[] items){Name = name;Items = items;}public override string ToString(){return $"Name: {Name}, Items: [{string.Join(", ", Items)}]";}}[MessagePackObject]public class ObjectFieldType{[Key(0)]public int Anything { get; set; }public ObjectFieldType(){// 默认构造函数}public ObjectFieldType(int anything){Anything = anything;}public override string ToString(){return $"Anything: {Anything}";}}
}
在反序列化时,与动态(未类型化)反序列化相同。
相关文章:
DeepSeek教unity------MessagePack-05
动态反序列化 当调用 MessagePackSerializer.Deserialize<object> 或 MessagePackSerializer.Deserialize<dynamic> 时,二进制数据中存在的任何值都将被转换为基本值,即 bool、char、sbyte、byte、short、int、long、ushort、uint、ulong、…...
Kotlin 优雅的接口实现
1. 日常遇到的冗余的接口方法实现 日常开发中,经常会要实现接口,但是很多场景中,只需要用到其中一两个方法,例如 ActivityLifecycleCallbacks,它有很多个接口需要实现,但是很多时候我们只需要用到其中的一…...
新的面试题CSS
解释CSS Hack 一般来说是针对不同的浏览器写不同的CSS,就是 CSS Hack。 IE浏览器Hack一般又分为三种,条件Hack、属性级Hack、选择符Hack(详细参考CSS文档:css文档)。例如: // 1、条件Hack <!--[if IE]> <sty…...
DeepSeek R1打造本地化RAG知识库
本文将详细介绍如何使用Ollama、Deepseek R1大语音模型、Nomic-Embed-Text向量模型和AnythingLLM共同搭建一个本地的私有RAG知识库。 一. 准备工作 什么是RAG? RAG是一种结合了信息检索和大模型(LLM)的技术,在对抗大模型幻觉、…...
聚铭网络入围2025年度江苏省政府采购信息安全设备协议供货名单
近日,2025年度江苏省党政机关、事业单位及团体组织信息安全设备框架协议采购项目入围结果公布。聚铭网络凭借自身专业实力和技术优势脱颖而出,成功入围22个分包。 此次采购项目是江苏省政府采购领域级别最高、覆盖面最广的项目之一。从资格评选到后期材料…...
基于Flask的影视剧热度数据可视化分析系统的设计与实现
【FLask】基于Flask的影视剧热度数据可视化分析系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 随着互联网技术的飞速发展,影视剧行业的数据量呈爆炸性增长&#x…...
【弹性计算】弹性计算的技术架构
弹性计算的技术架构 1.工作原理2.总体架构3.控制面4.数据面5.物理设施层 虽然弹性计算的产品种类越来越多,但不同产品的技术架构大同小异。下面以当前最主流的产品形态 —— 云服务器为例,探查其背后的技术秘密。 1.工作原理 云服务器通常以虚拟机的方…...
python-leetcode 31.K个一组翻转链表
题目: 给定链表的头节点head,每K个节点一组进行翻转,返回修改后的链表。 K是正整数,它的值小于等于链表的长度,如果节点总数不是K的整数组,那么将最后剩余的节点保持原有顺序。不能只改变节点内容的值,需…...
算法08-递归调用转为循环的通用方法
前导:问题引入 在Python中,递归调用过多会导致“递归深度过深”的错误,通常是因为递归没有正确终止条件或者递归层次太深。 这种错误通常会导致程序抛出 RecursionError 异常。 Python默认的递归深度限制大约是1000层(可以通过sys.getrecursionlimit()查看)。 修正方式…...
[创业之路-300]:进一步理解货币与金钱, 货币与货币政策
目录 一、货币 1.1 概述 1、货币的定义 2、货币的形态演变 3、货币的职能 4、货币的价值衡量 1.2 货币的分层 1、货币分层的目的与意义 2、货币分层的划分标准与层次 3、各国货币分层的实践 4、货币分层的影响与应用 1.3、M0、M1、M2变化对股市的影响 1、M0变化对…...
达梦:跟踪日志诊断
目录标题 参考连接**性能诊断:跟踪日志诊断****总结** 参考连接 性能诊断 -> 跟踪日志诊断 性能诊断:跟踪日志诊断 备份现有的日志配置文件 在修改文件之前,建议先备份原始文件,以防万一需要恢复。 cp /opt/dmdbms/dmdata/DA…...
Qwen2-VL 的重大省级,Qwen 发布新旗舰视觉语言模型 Qwen2.5-VL
Qwen2.5-VL 是 Qwen 的新旗舰视觉语言模型,也是上一代 Qwen2-VL 的重大飞跃。 Qwen2.5-VL主要特点 视觉理解事物:Qwen2.5-VL不仅能够熟练识别花、鸟、鱼、昆虫等常见物体,而且还能够分析图像中的文本、图表、图标、图形和布局。 代理性&…...
js考核第三题
题三:随机点名 要求: 分为上下两个部分,上方为显示区域,下方为控制区域。显示区域显示五十位群成员的学号和姓名,控制区域由开始和结束两个按钮 组成。点击开始按钮,显示区域里的内容开始滚动,…...
LabVIEW袜品压力测试系统
开发了一种基于LabVIEW开发的袜品压力测试系统。该系统利用LabVIEW并结合灵敏的传感器和高精度的处理模块,实现了对袜品压力的精确测量和分析。系统不同于传统的服装压力测试方法,为研究和评价袜子的舒适性提供了新的测试手段。 项目背景 该系统的…...
jsp页面跳转失败
今天解决一下jsp页面跳转失败的问题 在JavaWeb的学习过程中,编写了这样一段代码: <html> <body> <h2>Hello World!</h2><%--这里提交的路径,需要寻找到项目的路径--%> <%--${pageContext.request.context…...
1.推荐算法基本概念
推荐算法是一个非常重要且广泛应用的领域,特别是在电子商务、社交媒体、内容推荐等领域。第一课我们将介绍推荐算法的基本概念和分类,并简单讲解两种常见的推荐算法:协同过滤和基于内容的推荐。 推荐算法的基本概念 推荐系统的目标是根据用…...
Java 大视界 -- 大数据伦理与法律:Java 技术在合规中的作用与挑战(87)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十五节】
ISO 14229-1:2023 UDS诊断服务测试用例全解析(RoutineControl_0x31服务) 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS协议、0x31服务、例程控制、ISO 14229-1:2023、ECU测试 一、服务功能概述 0x31服…...
【深度强化学习】策略梯度算法:REINFORCE
策略梯度 强化学习算法进阶 Q-learning、DQN 及 DQN 改进算法都是基于价值(value-based)的方法,其中 Q-learning 是处理有限状态的算法,而 DQN 可以用来解决连续状态的问题。在强化学习中,除了基于值函数的方法&#…...
手机用流量怎样设置代理ip?
互联网各领域资料分享专区(不定期更新): Sheet...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
