unity 通过JsonUtility实现json数据的本地保存和读取
本文主要讲解json数据在本地的保存和读取,使用的是unity5之后提供的JsonUtility工具。
一、关于json数据的保存
在实际开发中,有时候可能涉及到大量数据保存到本地,以便于下次客户端的使用,这时候将数据保存成json文件到本地就比较方便了,具体实现方法如下:
文件的创建,下面为便于编辑器和手机端都方便使用,我们将文件保存到StreamingAssets中:
-
//保存json文件路径
-
string JsonPath()
-
{
-
return Application.streamingAssetsPath + "/JsonTest.json";
-
}
创建要保存的数据格式,这里创建了对应的玩家数据类
-
public class JsonData
-
{
-
public List<PlayerMessage> lsPlayerMessage;
-
}
-
-
//玩家信息
-
[Serializable]
-
public class PlayerMessage
-
{
-
public int PlayerId;
-
public string PlayerName;
-
public List<EquipMessage> PlayerEquip;
-
}
-
-
//装备信息
-
[Serializable]
-
public class EquipMessage
-
{
-
public int EquipId;
-
public string EquipName;
-
}
将对应的数据保存到对应的容器中,这里随便添加了一些初始值 ,进行测试:
-
//初始化json数据
-
void InitJsonData()
-
{
-
jsonData.lsPlayerMessage = new List<PlayerMessage>();
-
PlayerMessage playerMessage = new PlayerMessage();
-
playerMessage.PlayerId = 1;
-
playerMessage.PlayerName = "Json";
-
playerMessage.PlayerEquip = new List<EquipMessage>();
-
EquipMessage equipMessage = new EquipMessage();
-
equipMessage.EquipId = 101;
-
equipMessage.EquipName = "Gun";
-
playerMessage.PlayerEquip.Add(equipMessage);
-
jsonData.lsPlayerMessage.Add(playerMessage);
-
}
最后是讲上面json数据保存到本地:
-
//保存json数据到本地
-
void SaveJson()
-
{
-
//如果本地没有对应的json 文件,重新创建
-
if (!File.Exists(JsonPath()))
-
{
-
File.Create(JsonPath());
-
}
-
string json = JsonUtility.ToJson(jsonData, true);
-
File.WriteAllText(JsonPath(), json);
-
Debug.Log("保存成功");
-
}
运行结果如下:
二、关于json文件的读取:
-
//从本地读取json数据
-
void ReadJson()
-
{
-
if (!File.Exists(JsonPath()))
-
{
-
Debug.LogError("读取的文件不存在!");
-
return;
-
}
-
string json = File.ReadAllText(JsonPath());
-
JsonData jsonTemp = new JsonData();
-
jsonTemp = JsonUtility.FromJson<JsonData>(json);
-
Debug.Log("玩家数量:" + jsonTemp.lsPlayerMessage.Count);
-
for (int i = 0; i < jsonTemp.lsPlayerMessage.Count; i++)
-
{
-
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerId);
-
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerName);
-
for (int j = 0; j < jsonTemp.lsPlayerMessage[i].PlayerEquip.Count; j++)
-
{
-
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerEquip[j].EquipId);
-
Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerEquip[j].EquipName);
-
}
-
}
-
}
运行结果如下:
这就是全部的关于josn的数据本地和保存。
工程链接:https://pan.baidu.com/s/1Rz6rpNj1jPS0t9NklFOhRw
想了解更过unity相关知识,可以关注下方公众号,或者添加QQ群:879354767,不定期更新相关教程:
unity 通过JsonUtility实现json数据的本地保存和读取的更多相关文章
- 保存json数据到本地和读取本地json数据
private void saveJson(JsonBean bean) { File file = new File(getFilesDir(), "json.txt"); Bu ...
- pyhton 从web获取json数据 保存到本地然后再读取
从web中获取json数据直接进行处理总认为太慢.主要是从web中获取获取数据的过程有点慢. 所以就在想 假设先利用空暇时间把json数据获取并保存到本地,然后再从本地文件里读取和操作.应该就要快非常 ...
- 高效遍历匹配Json数据与双层for循环遍历Json数据
工作中往往遇到这种情况,保留用户操作痕迹,比如用户选择过得东西,用户进入其它页面再返回来用户选择的的数据还在. 比如:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状 ...
- QT json数据的应用(cJSON)
json数据可保存小量的数据在本地的json文件中.QT有两种方式操作:(1).cJSON (2).QT的操作json数据的类. 应用:将监控预案数据保存在本地中. 1.首先根据预案结构创建一个jso ...
- 使用python将mysql数据库的数据转换为json数据
由于产品运营部需要采用第三方个推平台,来推送消息.如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可. 本文将涉及到如何使用Python访问M ...
- Struts2 Action接收POST请求JSON数据及其实现解析
一.认识JSON JSON是一种轻量级.基于文本.与语言无关的数据交换格式,可以用文本格式的形式来存储或表示结构化的数据. 二.POST请求与Content-Type: application/jso ...
- C# 读取网页JSON数据
场景描述: 公司和别的系统需要对接,现在对方提供一个网址,数据都是json字符串,我需要对json数据进行处理. 提供的json数据如下格式 一.读取网址中的json数据 public string ...
- SpringMVC札集(07)——JSON数据
自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...
- 【spark】文件读写和JSON数据解析
1.读文件 通过 sc.textFile(“file://") 方法来读取文件到rdd中. val lines = sc.textFile("file://")//文件地 ...
随机推荐
- Davinci 可视化系统部署安装及简单使用
Davinci 是一个目前比较热门的国内开源BI系统,功能比较完善,各种可视化效果也挺不错.主要获取数据的方式是通过编写SQL 创建数据视图来展示各种图表的. Davinci面向业务人员/数据工程师/ ...
- 关于.NET微服务最热门的问题解答
在我们最近让我们一起学习.NET的微服务专场活动中,我们收到了一些很好的问题.我们在现场已经回答很多问题,但我们想继续回答一些在会议中出现的最热门的问题.如果你错过了现场直播,不要担心,因为你可以按需 ...
- 【转载】Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解
Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解 1清风揽月10人评论5006人阅读2017-06-21 15:48:43 博文说明[前言]: 本文 ...
- linux系统瓶颈分析(精) CPU Memory IO Network
linux系统瓶颈分析(精) linux系统瓶颈分析(精) (2013-09-17 14:22:00) 分类: linux服务器瓶颈分析 1.0 性能监控介绍性能优化就是找到系统处理中的瓶颈以及去 ...
- 常用Python第三方库简介
如果说强大的标准库奠定了Python发展的基石,丰富的第三方库则是python不断发展的保证,随着python的发展一些稳定的第三库被加入到了标准库里面,这里有6000多个第三方库的介绍 下表中加粗并 ...
- 第6讲 | 交换机与VLAN:办公室太复杂,我要回学校
第6讲 | 交换机与VLAN:办公室太复杂,我要回学校 拓扑结构是怎么形成的? 一个交换机肯定不够用,需要多台交换机,交换机之间连接起来,就形成一个稍微复杂的拓扑结构. 如何解决常见的环路问题? 包转 ...
- Python+Selenium - 文件上传
如下图,从系统点击上传功能,打开到这种如下图页面的才适合本文介绍的处理方法 处理方法一 pywinauto库 优点:可以选择多个文件,路径中有中文也支持 缺点:只能Windows平台使用 安装 pip ...
- 3D点云重建原理及Pytorch实现
3D点云重建原理及Pytorch实现 Pytorch: Learning Efficient Point Cloud Generation for Dense 3D Object Reconstruc ...
- Java IO学习笔记一:为什么带Buffer的比不带Buffer的快
作者:Grey 原文地址:Java IO学习笔记一:为什么带Buffer的比不带Buffer的快 Java中为什么BufferedReader,BufferedWriter要比FileReader 和 ...
- 作为一名双非本科毕业的Java程序员,我该如何在日益严重的内卷化中避免被裁?
前言 对一个 Java 程序员而言,并发编程能否熟练掌握是判断他是不是优秀的重要标准之一.因为并发编程在 Java 语言中最为晦涩的知识点,它涉及内存.CPU.操作系统.编程语言等多方面的基础能力,更 ...