【C# 教程系列第 24 篇】使用 LitJson 对 Json 数据解析

这是【C# 教程系列第 24 篇】,如果觉得有用的话,欢迎关注专栏。

如果你对 Json 还不太了解,可以看下我这篇博客 什么是Json,然后再来学习 LitJson 插件。


平常我们用的淘宝,QQ等都离不开登陆,注册,那我们就以此为例,把账号,密码写入到 Json,并从 Json 中把账号,密码解析出来。

LitJson 提供了两种创建和解析 Json 的方法,下面会分别介绍

第一种创建和解析 Json 的方法:JsonMapper

先写一个保存数据的类 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

1:创建 Json :将对象信息存入到 Json
string Datas = JsonMapper.ToJson(peoples);

注:这里用到了 JsonMapper 类的静态方法 ToJson,该方法参数为 object 类型,返回值为 string 类型。
此时用户数据已经存储到了 Json 中,我们通过打印查看一下是否真的成功了
在这里插入图片描述
ok,数据存储成功。不过需要注意一点
Json 保存的是类(SaveDatas),不是类成员(saveDatas列表)。

不过,细心的你可能会发现,第一个用户的账号是“苏醒”,可为什么显示的确实乱码的呢?
这是因为将数据存储到 Json 时自动对中文进行了转码,虽然看着是乱码,但不会影响从 Json 中解析数据。

2:解析 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 数据的方法

第二种创建和解析 Json 的方法:JsonData

JsonData 是 LitJson 中的另外一个类,它代表什么呢?

首先,它可以代表一个对象 { },也可以代表一个数组 [ ],它是什么取决于你怎么用它。
当然,你也可以通过 对象.SetJsonType() 显式的指定它的类型,如下图所示
在这里插入图片描述
不过即使不指定 JsonData 类型也是没问题的。

1:创建 Json 及 解析 Json

例:我们把如下格式所示的内容添加到 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 模拟简单的登陆、注册功能 ,这个学会了,背包什么的就都不在话下了。

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。


结束语

技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。

最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen Su

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值