目录
文件存储
两种文件信息解析方法
文件加密处理
文件解密处理
全部代码
文件存储
一些游戏案例开发过程中的一些数据转换成Json格式,然后存到指定的位置
//3.将对象转化为Json
List<Hokag> hokagList = new List<Hokag>()
{
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<Hokag> hokagList = new List<Hokag>();//创建列表,存放信息
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<Hokag[]>(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";
/// <summary>
/// 字符串加密
/// </summary>
/// <param name="toE">要加密的字符串</param>
/// <returns></returns>
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);
}
文件解密处理
/// <summary>
/// 字符串解密
/// </summary>
/// <param name="toD">要解密的字符串</param>
/// <returns></returns>
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<Hokag> hokagList = new List<Hokag>();//创建列表,存放信息
//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<Hokag[]>(File.ReadAllText(Application.dataPath + "/Hokag.txt"));
//foreach (Hokag item in hokagArray)
//{
// Debug.Log(item);
//}
//3.将对象转化为Json
List<Hokag> hokagList = new List<Hokag>()
{
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";
/// <summary>
/// 字符串加密
/// </summary>
/// <param name="toE">要加密的字符串</param>
/// <returns></returns>
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);
}
/// <summary>
/// 字符串解密
/// </summary>
/// <param name="toD">要解密的字符串</param>
/// <returns></returns>
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);
}
}