Untiy Json和Xml的序列化和反序列化
Json的序列化和反序列化
1.定义数据类
[Serializable]
public class ZoomPoint
{// 点名称, 将作为Key被字典存储public string name;// 轴心X坐标public Vector2 pivot = Vector2.one / 2;// 放大倍率,小于1是为缩小倍率,小于0是取绝对值,不允许原点对称缩放,需要保证计算轴心逻辑正确// 默认设为1.5f 放大倍率public float zoomMagnification = 5f;// 改变的需要的时间,默认设为1fpublic float time = 1.0f;public override string ToString(){return $"name = {this.name}, pivot = ({pivot.ToString()}), zoomMagnification = {this.zoomMagnification}, time = {this.time}";}
}
2. 定义Json存储类
// 数据存储接受类
[Serializable]
public class Data{// public ZoomPoint[] zoomPoints;// public Dictionary<string, ZoomPoint> zoomPoints;public List<ZoomPoint> zoomPoints;
}
3.序列化
// 写入数据
public void WriteDataTest(){Data data = new(){zoomPoints = new List<ZoomPoint>()};ZoomPoint point1 = new ZoomPoint{name = "1",pivot = new Vector2(0.75f,0.75f)};ZoomPoint point2 = new ZoomPoint{name = "2",pivot = new Vector2(0.5f,0.5f)};data.zoomPoints[0] = point1;data.zoomPoints[1] = point2;string js = JsonUtility.ToJson(data);// 获取项目路径string fileUrl;if(filePath == ""){fileUrl = Application.streamingAssetsPath + jsonFileName;}else{fileUrl = filePath;}using(StreamWriter sw = new StreamWriter(fileUrl)){ sw.WriteLine(js); //保存数据sw.Close(); sw.Dispose();}
}
4.反序列化
public Data ReadData(){// 获取文件路径string fileUrl;if(filePath == ""){fileUrl = Application.streamingAssetsPath + jsonFileName;}else{fileUrl = filePath;}//读取文件string readDate;using (StreamReader sr = File.OpenText(fileUrl)){readDate = sr.ReadLine();sr.Close();}Data data = JsonUtility.FromJson<Data>(readDate);// 分配内存if(data == null ){data = new Data() {zoomPoints = new List<ZoomPoint>()};return data;}// 数据保存到字典里foreach(ZoomPoint zp in data.zoomPoints){dict.TryAdd(zp.name, zp);}return data;}
数据存储效果:

Ps: Unity C# Json 序列化换行
在ToJson中使用两个参数,第二个参数PrettyPrint 输入True
private void JsonText() {Node node = new Node() {name = "Node_01",pos = new(0, 0)};string filePath = Application.streamingAssetsPath + "/Json_01.json";string str = JsonUtility.ToJson(node, true);using (StreamWriter sw = new StreamWriter(filePath)) {sw.WriteLine(str); // 保存数据sw.Close(); // 关闭文档sw.Dispose();}Debug.Log(str);Grid grid = new() {nodes = new List<Node>()};Node node1 = new Node() {name = "Node_01",pos = new Vector2(0, 0)};Node node2 = new Node() {name = "Node_02",pos = new Vector2(0,1)};grid.nodes.Add(node1);grid.nodes.Add(node2);string filePath_01 = Application.streamingAssetsPath + "/Json_02.json";string str_01 = JsonUtility.ToJson(grid, true);using (StreamWriter sw = new StreamWriter(filePath_01)) {sw.WriteLine(str_01); // 保存数据sw.Close(); // 关闭文档sw.Dispose();}Debug.Log("数据序列化完成");
}[Serializable]
public class Node {public string name;public Vector2 pos;
}[Serializable]
public class Grid {public List<Node> nodes;
}
效果:


Xml的序列化和反序列化
1.定义数据类
public class XmlText {public string name;public string value;public List<int> list;public override string ToString() {return $"name = {name}, value = {value}, list = {list}";}
}
2.序列化
public void Init() {test = new XmlText() {name = "Xml测试",value = "value",list = new List<int>()};test.list.Add(1);test.list.Add(3);test.list.Add(100);}
// 序列化Xml
public void XmlSerialize() {// 定义流文件FileStream fileStream = new FileStream(Application.streamingAssetsPath + "/text.xml",FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);// 定义写入流StreamWriter sw = new StreamWriter(fileStream, System.Text.Encoding.UTF8);// 位于System.Xml.Serialization 中的Xml序列化XmlSerializer xml = new XmlSerializer(test.GetType());// 将类序列化写入流中xml.Serialize(sw, test);// 关闭流sw.Close();fileStream.Close();
}
3.反序列化
public XmlText Deserialize() {// 流文件FileStream fs = new FileStream(Application.streamingAssetsPath + "/text.xml", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);// 定义序列化类XmlSerializer xml = new XmlSerializer(typeof(XmlText));// 反向序列化XmlText result = (XmlText)xml.Deserialize(fs);fs.Close();return result;}
结果:

相关文章:
Untiy Json和Xml的序列化和反序列化
Json的序列化和反序列化 1.定义数据类 [Serializable] public class ZoomPoint {// 点名称, 将作为Key被字典存储public string name;// 轴心X坐标public Vector2 pivot Vector2.one / 2;// 放大倍率,小于1是为缩小倍率,小于0是取绝对值,不…...
springboot在线小说阅读网站的设计与实现
网站首页: 用户登录/注册:用户注册时进行用户名及笔名存在的限制热门小说推荐:显示小说名及作者名,点击进入对应小说小说类别:玄幻,武侠,言情,历史等,点击对用分类到分类…...
整理mongodb文档:改
个人博客 整理mongodb文档:改 求关注,求批评,求进步 文章概叙 本文主要讲的是mongodb的updateOne以及updateMany,主要还是在shell下进行操作,也讲解下主要的参数upsert以及更新的参数。 数据准备 本次需要准备的数据不是很多…...
【设计模式】单例模式
什么是单例模式? 保证一个类仅有一个实例,并提供一个访问它的全局访问点 单例模式的应用场景 1.整个程序的运行中只允许有一个类的实例; 2.需要频繁实例化然后销毁的对象。 3.创建对象时耗时过多或者耗资源过多,但又经常用到…...
(2)原神角色数据分析-2
功能一: 得到某个属性的全部角色,将其封装在class中 """各元素角色信息:一对多""" from pandas import DataFrame, Series import pandas as pd import numpy as npclass FindType:# 自动执行,将…...
138. 复制带随机指针的链表
138. 复制带随机指针的链表 题目-中等难度示例1. 题目-中等难度 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&…...
Windows中redis怎么设置密码
设置密码有两种方式,用过第一种可以 1. 命令行设置密码。 运行cmd切换到redis根目录,先启动服务端 >redis-server.exe 另开一个cmd切换到redis根目录,启动客户端 >redis-cli.exe -h 127.0.0.1 -p 6379 客户端使用config get requ…...
租赁OLED透明屏:打造独特商业体验的智慧选择
近年来,OLED透明屏技术在商业领域中迅速崛起,其高透明度和卓越的图像质量为商家创造了全新的展示方式。 租赁OLED透明屏作为一种智慧选择,不仅能提升品牌形象和吸引力,还能创造与众不同的视觉体验。 对此,尼伽将和大…...
Nacos服务治理—负载均衡
引入负载均衡 在消费方引入负载均衡机制,同时简化获取服务提供者信息的流程 Spring Cloud引入组件LoadBalance实现负载均衡 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web<…...
flask-----初始项目架构
1.初始的项目目录 -apps 包 ------存放app -user文件夹 -------就是一个app -models.py --------存放表模型 -views.py -------存放主代码 -ext包 -init.py -------实例化db对象 -manage.py -----运行项目的入口 -setting.py -----配置文件 2.各文件内容 manage…...
揭秘史上最全可视化大屏模板,00后亲测好用到离谱,效率加速99%
前几天老陈公司刚入职的一个00后,昨天被领导叫到办公室怒批了一个小时,我在外面都能听到领导的怒吼声,直接骂他是个垃圾,屁用没有,学都白上了。一个180的大高个小伙,直接被骂到痛哭流涕,走出办公…...
nginx基于主机和用户访问控制以及缓存简单例子
一.基于主机访问控制 1.修改nginx.conf文件 2.到其他主机上测试 (1)191主机 (2)180主机 二.基于用户访问控制 1.修改nginx.conf文件 2.使用hpasswd为用户创建密码文件,并指定到刚才指定的密码文件webck 3.测试…...
React使用antd的图片预览组件,点击哪个图片就预览哪个的设置
使用了官方推荐的相册模式的预览,但是点击预览之后,每次都是从图片列表的第一张开始预览,而不是点击哪张就从哪张开始预览: 所以这里我就封装了一下,对初始化预览的列表进行了逻辑处理: 当点击开始预览的…...
排序的介绍
排序算法介绍 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列 粗暴理解 将杂乱无章的数据元素,通过一定的方法按照关键字顺序排列的过程叫做排序 排序分内部排序和外部排序,若整个排序过程不需…...
appuploader使用教程
转载:appuploader使用教程 目录 问题解决秘籍 登录失败 don’t have access,提示没权限或同意协议 上传后在app管理中心找不到版本提交 不是等待上传状态 提示已经上传过包 上传提示tcpPort or udpPorts错误 上传提示已经有进程在上传 保存上传专用密码提示…...
企业权限管理(七)-权限操作
1. 数据库与表结构 1.1 用户表 1.1.1 用户表信息描述 users 1.1.2 sql语句 CREATE TABLE users( id varchar2(32) default SYS_GUID() PRIMARY KEY, email VARCHAR2(50) UNIQUE NOT NULL, username VARCHAR2(50), PASSWORD VARCHAR2(50), phoneNum VARCHAR2(20), STATUS INT )…...
【深度学习笔记】TensorFlow 常用函数
TensorFlow 提供了一些机器学习中常用的数学函数,并封装在 Module 中,例如 tf.nn Module 提供了神经网络常用的基本运算,tf.math Module 则提供了机器学习中常用的数学函数。本文主要介绍 TensorFlow 深度学习中几个常用函数的定义与用法&…...
函数的递归与迭代
递归经典问题:(自行尝试) 1、汉诺塔问题 2、青蛙跳台阶问题 练习1、 练习2、...
win10 + VS2022 安装opencv C++
最近需要用到C opencv,看了很多帖子都需要自己编译opencv源码。为避免源码编译,可以使用VS来配置opencv C。下面是主要过程: 目录 1. 从官网下载 opencv - Get Started - OpenCV 2. 点击这个exe文件进行安装 3. 配置环境变量 4. VS中的项…...
nginx反向代理及负载均衡的实现
目录 1.nginx反向代理 2.nginx负载均衡 3.nginx反向代理及负载均衡实现 nginx反向代理 4台主机都需要的操作: 两台服务器操作: 两台主机服务器进行测试; nginx负载均衡配置 4.nginx配置其他参数 多虚拟机访问 后端服务器日志中需要…...
绝对能解决IntelliJ IDEA 控制台中文乱码问题!!!
绝对能解决IntelliJ IDEA 控制台中文乱码问题!!! 1 idea 控制台中文乱码idea 运行代码,控制台的中文却是乱码,相信这个是所有 Javaer 都会遇到的问题,但是很惭愧,我工作 7 年才彻底解决这个问题…...
Nginx本地缓存
一、前言:为什么需要 Nginx 本地缓存?你是否面临这些痛点?❌ 后端服务压力大,大量重复请求打到应用层❌ 静态资源(图片、JS、CSS)频繁回源❌ 接口响应慢,用户体验差❌ 后端宕机时,整…...
计算机毕业设计:Python全国天气数据可视化与预测系统 Flask框架 多元线性回归 气象 天气 机器学习 爬虫 数据分析 可视化 深度学习(建议收藏)✅
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...
2026届必备的AI写作神器实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 这会儿,AI正凭借一种从来没有过的态势深切改变着毕业论文的创作生态,…...
CppJieba中文分词架构深度解析与实战指南
CppJieba中文分词架构深度解析与实战指南 【免费下载链接】cppjieba "结巴"中文分词的C版本 项目地址: https://gitcode.com/gh_mirrors/cp/cppjieba CppJieba作为"结巴"中文分词的C高性能实现,为C开发者提供了工业级的中文分词解决方案…...
WPF新手村教程(七)—— 终章(MVVM架构初见杀)疤
1. 哑铃图是什么? 哑铃图(Dumbbell Plot),有时也称为DNA图或杠铃图,是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中,我们通常使用两条折…...
【深度解析】Godzilla流量特征与实战检测技巧
1. Godzilla流量核心特征解析 第一次接触Godzilla流量时,我和很多安全工程师一样被它独特的通信模式所迷惑。这种基于Java编写的Webshell管理工具,在攻防演练中出现的频率越来越高。经过多次实战分析,我总结出几个关键特征点,这些…...
Windows HEIC缩略图插件:3分钟解决iPhone照片在Windows上的预览难题
Windows HEIC缩略图插件:3分钟解决iPhone照片在Windows上的预览难题 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails …...
机器人在未来,能否走进千家万户?
——作为淮南的一名少儿编程老师,每天和孩子们打交道。课堂上,孩子们最常问我的问题之一就是:“老师,以后我家能买一个机器人吗?”每当这时,我都会想起自己小时候看《哆啦A梦》时的憧憬——谁不想拥有一个能…...
5种革命性用法:用DDrawCompat让经典游戏在现代系统上重生
5种革命性用法:用DDrawCompat让经典游戏在现代系统上重生 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDr…...
