【c#】使用 LitJson 对 Json 数据解析

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

文章目录

      • 第一种创建和解析 Json 的方法:JsonMapper
        • 1:创建 Json :将对象信息存入到 Json
        • 2:解析 Json :将对象信息从 Json 中取出来
      • 第二种创建和解析 Json 的方法:JsonData
        • 1:创建 Json 及 解析 Json

平常我们用的淘宝,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() 显式的指定它的类型,如下图所示
【c#】使用 LitJson 对 Json 数据解析_第1张图片
不过即使不指定 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 模拟简单的登陆、注册功能 ,这个学会了,背包什么的就都不在话下了。


结束语

如果这篇博客有幸帮到了您,欢迎点击下方链接,和更多志同道合的伙伴一起交流,一起进步。

Web开发者俱乐部

你可能感兴趣的:(C#,Litjson,解析Json数据,创建Json数据)