如果你对 Json 还不太了解,可以看下我这篇博客 什么是Json,然后再来学习 LitJson 插件。
LitJson 提供了两种创建和解析 Json 的方法,下面会分别介绍
先写一个保存数据的类 SaveData,代码如下
public class SaveData
{
public int serialNumber; //序号
public string accountNumber; //账号
public string password; //密码
}
登陆注册的人肯定不止一个,再写一个类 SaveDatas 保存所有人的信息,代码如下
public class SaveDatas
{
public SaveData[] saveDatas;
}
接着写一个 MethodOne 方法,把数据存储到 SaveDatas 类里,并在 Start() 函数里调用,代码如下
void Start()
{
MethodOne();
}
void MethodOne()
{
//第一个用户的账号密码
SaveData peopleOne = new SaveData();
peopleOne.serialNumber = 1;
peopleOne.accountNumber = "苏醒";
peopleOne.password = "123456";
//第二个用户的账号密码
SaveData peopleTwo = new SaveData();
peopleTwo.serialNumber = 2;
peopleTwo.accountNumber = "wangtao";
peopleTwo.password = "789789";
//存储数据
SaveDatas peoples = new SaveDatas();
peoples.saveDatas = new SaveData[]{
peopleOne, peopleTwo };
//创建Json
string Datas = JsonMapper.ToJson(peoples);
//解析Json
SaveDatas sd = JsonMapper.ToObject<SaveDatas>(Datas);
}
下面来分别分析创建及解析Json
string Datas = JsonMapper.ToJson(peoples);
注:这里用到了 JsonMapper 类的静态方法 ToJson,该方法参数为 object 类型,返回值为 string 类型。
此时用户数据已经存储到了 Json 中,我们通过打印查看一下是否真的成功了
ok,数据存储成功。不过需要注意一点
Json 保存的是类(SaveDatas),不是类成员(saveDatas列表)。
不过,细心的你可能会发现,第一个用户的账号是“苏醒”,可为什么显示的确实乱码的呢?
这是因为将数据存储到 Json 时自动对中文进行了转码,虽然看着是乱码,但不会影响从 Json 中解析数据。
SaveDatas sd = JsonMapper.ToObject<SaveDatas>(Datas);
注:这里用到了 JsonMapper 类的静态方法 ToObject,该方法 <> 内需要传入要解析的对象类型,() 内参数为 string 类型,返回值也为要解析的对象类型。不过需要注意一点
Json 保存的是类(SaveDatas),不是类成员(saveDatas列表)。
我们再把第一个用户的信息给打印出来
print(sd.saveDatas[0]. serialNumber+ ","+sd.saveDatas[0].accountNumber+","+ sd.saveDatas[0].password);
如下图所示
这也印证了上面说的,虽然存进去的中文会乱码,但不影响解析数据。
不过有时候我们存储的数据非常简单非常少,也需要先写上面两个类 SaveData 和 SaveDatas 吗?答案是不需要的,LitJson 也给我们准备了另外一种创建,解析 Json 数据的方法
JsonData 是 LitJson 中的另外一个类,它代表什么呢?
首先,它可以代表一个对象 { },也可以代表一个数组 [ ],它是什么取决于你怎么用它。
当然,你也可以通过 对象.SetJsonType() 显式的指定它的类型,如下图所示
不过即使不指定 JsonData 类型也是没问题的。
例:我们把如下格式所示的内容添加到 Json 中去,用 JsonData 如何实现呢?
{"accountNumber":"suxing","password":"123456"}
答:只需要像给字典那样存值就可以了,如下:
void MethodTwo()
{
//创建 Json
JsonData jd = new JsonData();
jd["accountNumber"] = "suxing";
jd["password"] = "123456";
string str = jd.ToJson();
print(str);
//解析 Json
JsonData objData = JsonMapper.ToObject(str);
print(objData["accountNumber"]);
print(objData["password"]);
}
解析 Json 用到了 JsonMapper.ToObject() ,参数为 string 类型,返回类型为 JsonData,取值也和字典类似,根据“键”去取值即可。
此外,我又写了一篇博客,使用 Json 模拟简单的登陆、注册功能 ,这个学会了,背包什么的就都不在话下了。
如果这篇博客有幸帮到了您,欢迎点击下方链接,和更多志同道合的伙伴一起交流,一起进步。
结束语