本文主要讲解json数据在本地的保存和读取,使用的是unity5之后提供的JsonUtility工具。

一、关于json数据的保存

在实际开发中,有时候可能涉及到大量数据保存到本地,以便于下次客户端的使用,这时候将数据保存成json文件到本地就比较方便了,具体实现方法如下:

文件的创建,下面为便于编辑器和手机端都方便使用,我们将文件保存到StreamingAssets中:

    1. //保存json文件路径
      1. string JsonPath()
        1. {
          1. return Application.streamingAssetsPath + "/JsonTest.json";
            1. }
          1.  

          创建要保存的数据格式,这里创建了对应的玩家数据类

            1. public class JsonData
              1. {
                1. public List<PlayerMessage> lsPlayerMessage;
                  1. }
                      1. //玩家信息
                        1. [Serializable]
                          1. public class PlayerMessage
                            1. {
                              1. public int PlayerId;
                                1. public string PlayerName;
                                  1. public List<EquipMessage> PlayerEquip;
                                    1. }
                                        1. //装备信息
                                          1. [Serializable]
                                            1. public class EquipMessage
                                              1. {
                                                1. public int EquipId;
                                                  1. public string EquipName;
                                                    1. }
                                                  1.  

                                                  将对应的数据保存到对应的容器中,这里随便添加了一些初始值 ,进行测试:

                                                    1. //初始化json数据
                                                      1. void InitJsonData()
                                                        1. {
                                                          1. jsonData.lsPlayerMessage = new List<PlayerMessage>();
                                                            1. PlayerMessage playerMessage = new PlayerMessage();
                                                              1. playerMessage.PlayerId = 1;
                                                                1. playerMessage.PlayerName = "Json";
                                                                  1. playerMessage.PlayerEquip = new List<EquipMessage>();
                                                                    1. EquipMessage equipMessage = new EquipMessage();
                                                                      1. equipMessage.EquipId = 101;
                                                                        1. equipMessage.EquipName = "Gun";
                                                                          1. playerMessage.PlayerEquip.Add(equipMessage);
                                                                            1. jsonData.lsPlayerMessage.Add(playerMessage);
                                                                              1. }
                                                                            1.  

                                                                            最后是讲上面json数据保存到本地:

                                                                              1. //保存json数据到本地
                                                                                1. void SaveJson()
                                                                                  1. {
                                                                                    1. //如果本地没有对应的json 文件,重新创建
                                                                                      1. if (!File.Exists(JsonPath()))
                                                                                        1. {
                                                                                          1. File.Create(JsonPath());
                                                                                            1. }
                                                                                              1. string json = JsonUtility.ToJson(jsonData, true);
                                                                                                1. File.WriteAllText(JsonPath(), json);
                                                                                                  1. Debug.Log("保存成功");
                                                                                                    1. }
                                                                                                  1.  

                                                                                                  运行结果如下:

                                                                                                  二、关于json文件的读取:

                                                                                                    1. //从本地读取json数据
                                                                                                      1. void ReadJson()
                                                                                                        1. {
                                                                                                          1. if (!File.Exists(JsonPath()))
                                                                                                            1. {
                                                                                                              1. Debug.LogError("读取的文件不存在!");
                                                                                                                1. return;
                                                                                                                  1. }
                                                                                                                    1. string json = File.ReadAllText(JsonPath());
                                                                                                                      1. JsonData jsonTemp = new JsonData();
                                                                                                                        1. jsonTemp = JsonUtility.FromJson<JsonData>(json);
                                                                                                                          1. Debug.Log("玩家数量:" + jsonTemp.lsPlayerMessage.Count);
                                                                                                                            1. for (int i = 0; i < jsonTemp.lsPlayerMessage.Count; i++)
                                                                                                                              1. {
                                                                                                                                1. Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerId);
                                                                                                                                  1. Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerName);
                                                                                                                                    1. for (int j = 0; j < jsonTemp.lsPlayerMessage[i].PlayerEquip.Count; j++)
                                                                                                                                      1. {
                                                                                                                                        1. Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerEquip[j].EquipId);
                                                                                                                                          1. Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerEquip[j].EquipName);
                                                                                                                                            1. }
                                                                                                                                              1. }
                                                                                                                                                1. }
                                                                                                                                              1.  

                                                                                                                                              运行结果如下:

                                                                                                                                              这就是全部的关于josn的数据本地和保存。

                                                                                                                                              工程链接:https://pan.baidu.com/s/1Rz6rpNj1jPS0t9NklFOhRw

                                                                                                                                              想了解更过unity相关知识,可以关注下方公众号,或者添加QQ群:879354767,不定期更新相关教程:

                                                                                                                                              unity 通过JsonUtility实现json数据的本地保存和读取的更多相关文章

                                                                                                                                              1. 保存json数据到本地和读取本地json数据

                                                                                                                                                private void saveJson(JsonBean bean) { File file = new File(getFilesDir(), "json.txt"); Bu ...

                                                                                                                                              2. pyhton 从web获取json数据 保存到本地然后再读取

                                                                                                                                                从web中获取json数据直接进行处理总认为太慢.主要是从web中获取获取数据的过程有点慢. 所以就在想 假设先利用空暇时间把json数据获取并保存到本地,然后再从本地文件里读取和操作.应该就要快非常 ...

                                                                                                                                              3. 高效遍历匹配Json数据与双层for循环遍历Json数据

                                                                                                                                                工作中往往遇到这种情况,保留用户操作痕迹,比如用户选择过得东西,用户进入其它页面再返回来用户选择的的数据还在. 比如:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状 ...

                                                                                                                                              4. QT json数据的应用(cJSON)

                                                                                                                                                json数据可保存小量的数据在本地的json文件中.QT有两种方式操作:(1).cJSON (2).QT的操作json数据的类. 应用:将监控预案数据保存在本地中. 1.首先根据预案结构创建一个jso ...

                                                                                                                                              5. 使用python将mysql数据库的数据转换为json数据

                                                                                                                                                由于产品运营部需要采用第三方个推平台,来推送消息.如果手动一个个键入字段和字段值,容易出错,且非常繁琐,需要将mysql的数据转换为json数据,直接复制即可. 本文将涉及到如何使用Python访问M ...

                                                                                                                                              6. Struts2 Action接收POST请求JSON数据及其实现解析

                                                                                                                                                一.认识JSON JSON是一种轻量级.基于文本.与语言无关的数据交换格式,可以用文本格式的形式来存储或表示结构化的数据. 二.POST请求与Content-Type: application/jso ...

                                                                                                                                              7. C# 读取网页JSON数据

                                                                                                                                                场景描述: 公司和别的系统需要对接,现在对方提供一个网址,数据都是json字符串,我需要对json数据进行处理. 提供的json数据如下格式 一.读取网址中的json数据 public string ...

                                                                                                                                              8. SpringMVC札集(07)——JSON数据

                                                                                                                                                自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

                                                                                                                                              9. 【spark】文件读写和JSON数据解析

                                                                                                                                                1.读文件 通过 sc.textFile(“file://") 方法来读取文件到rdd中. val lines = sc.textFile("file://")//文件地 ...

                                                                                                                                              随机推荐

                                                                                                                                              1. C++PRIMER第五版练习题答案第一章

                                                                                                                                                C++PRIMER第五版练习题答案第一章 应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一 ...

                                                                                                                                              2. 17.继承 and18.接口和多态 内部类 匿名内部类,Lambda表达式

                                                                                                                                                1. 继承 1.1 继承的实现(掌握) 继承的概念 继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法 实现继承的格式 继承通过extends实现 ...

                                                                                                                                              3. tar解压某个目录 tar解压某个指定的文件或者文件夹

                                                                                                                                                tar解压某个目录 tar解压某个指定的文件或者文件夹 发布时间:2017-05-30 来源:服务器之家   1. 先查看压缩文档中有那些文件,如果都不清楚文件内容,然后就直接解压,这个是不可能的 使 ...

                                                                                                                                              4. Linux单用户模式(修改密码、运行级别)方法详解

                                                                                                                                                很多新手当面对"忘记 root 账户密码导致无法登陆系统"这个问题时,直接选择重新系统.其实大可不必,我只需要进入 emergency mode(单用户模式)更新 root 账户的 ...

                                                                                                                                              5. centos国内镜像下载

                                                                                                                                                国内镜像下载 http://mirrors.aliyun.com/centos/6/isos/x86_64/ 如果需要下载centos 7 版本进入对应7的/isos/x86_64/ 选择minima ...

                                                                                                                                              6. 使用mybatis逆向工程Example类,(或者)or条件查询(Day_47)

                                                                                                                                                使用Example类,or条件查询 SetmealExample setmealExample=new SetmealExample(); setmealExample.or().andNameLik ...

                                                                                                                                              7. 删除win10系统下文件默认打开方式的关联-win10配置

                                                                                                                                                现象 文件默认打开方式错误 链接到老的打开软件 无法图形化重定义关联软件 文件图标关联异常 1. 打开注册表编辑器 win + R regedit 2. 修改注册表 找到以下注册表路径,找到指定的文件 ...

                                                                                                                                              8. unity中UI坐标转3d世界坐标

                                                                                                                                                方法: public static Vector3 UIScreenToWorldPoint(Vector3 uiPostion) { uiPostion = UICamera.mainCamera. ...

                                                                                                                                              9. kubernetes 降本增效标准指南|理解弹性,应用弹性

                                                                                                                                                弹性伸缩在云计算领域的简述 弹性伸缩又称自动伸缩,是云计算场景下一种常见的方法,弹性伸缩可以根据服务器上的负载.按一定的规则.进行弹性的扩缩容服务器. 弹性伸缩在不同场景下的含义: 对于服务运行在自建 ...

                                                                                                                                              10. ISP算法高水平分析(下)

                                                                                                                                                ISP算法高水平分析(下)  十.LSC(Lens Shade Correction)------镜头阴影矫正 Lens Shading指画面四角由于入射光线不足形成的暗角,同时,由于不同频率的光折射 ...