目录
一些游戏案例开发过程中的一些数据转换成Json格式,然后存到指定的位置
- //3.将对象转化为Json
- List
hokagList = new List() - {
- new Hokag(){Name="漩涡鸣人",Age=20,Skill="嘴遁"},
- new Hokag(){Name="木叶丸",Age=15,Skill="色诱之术"}
- };
- string json = JsonMapper.ToJson(hokagList);
- json = Regex.Unescape(json);//把Unicode转成中文
-
- //加密
- DataSecurity dataSecurity = new DataSecurity();
-
-
-
- Debug.Log(json);
-
-
- //文件存储
- File.WriteAllText(Application.dataPath + "/Hokalnfor.txt", json, Encoding.UTF8);
1.JsonMapper.ToObject去解析json
- //方法1.JsonMapper.ToObject去解析json
- JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(Application.dataPath + "/Hokag.txt"));
- List
hokagList = new List();//创建列表,存放信息 -
- foreach (JsonData item in jsonData)
- {
- Hokag hokag = new Hokag();//创建对象
- //根据键来找到对应的值
- JsonData nameValue = item["Name"];
- JsonData ageValue = item["Age"];
- JsonData skillValue = item["Skill"];
-
- hokag.Name = nameValue.ToString();
- hokag.Age = Int32.Parse(ageValue.ToString());
- hokag.Skill = skillValue.ToString();
- hokagList.Add(hokag);//添加至列表
- }
-
- foreach (Hokag item in hokagList)
- {
- Debug.Log(item);
- }
-
2.使用泛型来解析Json
- //方法2.使用泛型来解析Json
- //JSON里面对象的键必须要和定义的类里面的属性或者字段一致
- Hokag[] hokagArray = JsonMapper.ToObject
(File.ReadAllText(Application.dataPath + "/Hokag.txt")); - foreach (Hokag item in hokagArray)
- {
- Debug.Log(item);
- }
文件信息的存储和解析在同一个C#文件 JsonText.cs中,需要挂载在空物体上。
需要用到的头文件:
- using UnityEngine;
- using System.Runtime.Serialization.Json;
- using System.Collections.Generic;
- using System.Text.RegularExpressions;//转码引用命名空间把Unicode转成中文
- using System.IO;//输入输出流
- using LitJson;
- using System;
- using System.Text;
效果:


新开C#文件DataSecrity.cs
- //加密密钥
- string key = "12345678123456781234567812345678";
-
-
-
- ///
- /// 字符串加密
- ///
- /// 要加密的字符串
- ///
- public string Encript(string toE)
- {
-
-
- //将密钥转换为byte数组
- byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
-
- //创建 RijindaelManaged对象
- RijndaelManaged rDel = new RijndaelManaged();
- //设置相关参数
- rDel.Key = keyArray;//密钥
- rDel.Mode = CipherMode.ECB;//块码模式
- rDel.Padding = PaddingMode.PKCS7;//填充模式
- //创建加密器对象
- ICryptoTransform cTransform = rDel.CreateDecryptor();
- //将要加密的明文字符串转换为byte数组
- byte[] toEncriptArray = UTF8Encoding.UTF8.GetBytes(toE);
- //加密 得到密文byte数组
- byte[] resultArray = cTransform.TransformFinalBlock(toEncriptArray, 0, toEncriptArray.Length);
-
- //返回密文字符串
- return Convert.ToBase64String(resultArray, 0, resultArray.Length);
-
- }
-
-
- ///
- /// 字符串解密
- ///
- /// 要解密的字符串
- ///
- public string Decript(string toD)
- {
- //将密钥转化为byte数组
- byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
- //创建 RijindaelManaged对象
- RijndaelManaged rDel = new RijndaelManaged();
- //设置相关参数
- rDel.Key = keyArray;//密钥
- rDel.Mode = CipherMode.ECB;//块码模式
- rDel.Padding = PaddingMode.PKCS7;//填充模式
-
- //创建解密器对象
- ICryptoTransform cTransform = rDel.CreateDecryptor();
- //将密文字符串转换位byte数组
- byte[] toDecriptArray = Convert.FromBase64String(toD);
- //解密,得到明文byte数组
- byte[] resultArray = cTransform.TransformFinalBlock(toDecriptArray, 0, toDecriptArray.Length);
- //返回明文字符串
- return UTF8Encoding.UTF8.GetString(resultArray);
-
- }
-
JsonTest.cs
- using UnityEngine;
- using System.Runtime.Serialization.Json;
- using System.Collections.Generic;
- using System.Text.RegularExpressions;//转码引用命名空间把Unicode转成中文
- using System.IO;//输入输出流
- using LitJson;
- using System;
- using System.Text;
-
- public class JsonTest : MonoBehaviour
- {
-
-
- void Start()
- {
- 方法1.JsonMapper.ToObject去解析json
- //JsonData jsonData = JsonMapper.ToObject(File.ReadAllText(Application.dataPath + "/Hokag.txt"));
- //List
hokagList = new List();//创建列表,存放信息 -
- //foreach (JsonData item in jsonData)
- //{
- // Hokag hokag = new Hokag();//创建对象
- // //根据键来找到对应的值
- // JsonData nameValue = item["Name"];
- // JsonData ageValue = item["Age"];
- // JsonData skillValue = item["Skill"];
-
- // hokag.Name = nameValue.ToString();
- // hokag.Age = Int32.Parse(ageValue.ToString());
- // hokag.Skill = skillValue.ToString();
- // hokagList.Add(hokag);//添加至列表
- //}
-
- //foreach (Hokag item in hokagList)
- //{
- // Debug.Log(item);
- //}
-
-
-
-
- 方法2.使用泛型来解析Json
- JSON里面对象的键必须要和定义的类里面的属性或者字段一致
- //Hokag[] hokagArray = JsonMapper.ToObject
(File.ReadAllText(Application.dataPath + "/Hokag.txt")); - //foreach (Hokag item in hokagArray)
- //{
- // Debug.Log(item);
- //}
-
-
-
- //3.将对象转化为Json
- List
hokagList = new List() - {
- new Hokag(){Name="漩涡鸣人",Age=20,Skill="嘴遁"},
- new Hokag(){Name="木叶丸",Age=15,Skill="色诱之术"}
- };
- string json = JsonMapper.ToJson(hokagList);
- json = Regex.Unescape(json);//把Unicode转成中文
-
- //打印前加密处理
- DataSecurity dataSecurity = new DataSecurity();
- json = dataSecurity.Encript(json);//字符串加密
-
-
- json = dataSecurity.Decript(json);//字符串解密
-
-
-
- Debug.Log(json);
-
- //文件存储
- File.WriteAllText(Application.dataPath + "/Hokalnfor.txt", json, Encoding.UTF8);
-
-
-
- }
- }
DataSecurity.cs
- using System.Collections;
- using System.Collections.Generic;
- using System.Security.Cryptography;//密码学命名空间
- using System.Text;
- using System;
-
- public class DataSecurity
- {
- //加密密钥
- string key = "12345678123456781234567812345678";
-
-
-
- ///
- /// 字符串加密
- ///
- /// 要加密的字符串
- ///
- public string Encript(string toE)
- {
-
-
- //将密钥转换为byte数组
- byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
-
- //创建 RijindaelManaged对象
- RijndaelManaged rDel = new RijndaelManaged();
- //设置相关参数
- rDel.Key = keyArray;//密钥
- rDel.Mode = CipherMode.ECB;//块码模式
- rDel.Padding = PaddingMode.PKCS7;//填充模式
- //创建加密器对象
- ICryptoTransform cTransform = rDel.CreateDecryptor();
- //将要加密的明文字符串转换为byte数组
- byte[] toEncriptArray = UTF8Encoding.UTF8.GetBytes(toE);
- //加密 得到密文byte数组
- byte[] resultArray = cTransform.TransformFinalBlock(toEncriptArray, 0, toEncriptArray.Length);
-
- //返回密文字符串
- return Convert.ToBase64String(resultArray, 0, resultArray.Length);
-
- }
-
- ///
- /// 字符串解密
- ///
- /// 要解密的字符串
- ///
- public string Decript(string toD)
- {
- //将密钥转化为byte数组
- byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
- //创建 RijindaelManaged对象
- RijndaelManaged rDel = new RijndaelManaged();
- //设置相关参数
- rDel.Key = keyArray;//密钥
- rDel.Mode = CipherMode.ECB;//块码模式
- rDel.Padding = PaddingMode.PKCS7;//填充模式
-
- //创建解密器对象
- ICryptoTransform cTransform = rDel.CreateDecryptor();
- //将密文字符串转换位byte数组
- byte[] toDecriptArray = Convert.FromBase64String(toD);
- //解密,得到明文byte数组
- byte[] resultArray = cTransform.TransformFinalBlock(toDecriptArray, 0, toDecriptArray.Length);
- //返回明文字符串
- return UTF8Encoding.UTF8.GetString(resultArray);
-
- }
-
- }