欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何用 LitJson 插件 对 Json 数据进行解析

程序员文章站 2024-01-20 12:57:28
...

如果你对 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 中

1:创建 Json :将对象信息存入到 Json

string Datas = JsonMapper.ToJson(peoples);

注:这里用到了 JsonMapper 类的静态方法 ToJson,该方法参数为 object 类型,返回值为 string 类型。
此时用户数据已经存储到了 Json 中,我们通过打印查看一下是否真的成功了
如何用 LitJson 插件 对 Json 数据进行解析
ok,数据存储成功。
不过,细心的你可能会发现,第一个用户的账号是“苏醒”,可为什么显示的确实乱码的呢?
这是因为将数据存储到 Json 时自动对中文进行了转码,虽然看着是乱码,但不会影响从 Json 中解析数据。

2:解析 Json :将对象信息从 Json 中取出来

SaveDatas sd = JsonMapper.ToObject<SaveDatas>(Datas);

注:这里用到了 JsonMapper 类的静态方法 ToObject,该方法 <> 内需要传入要解析的对象类型,() 内参数为 string 类型,返回值也为要解析的对象类型。

我们再把第一个用户的信息给打印出来

print(sd.saveDatas[0]. serialNumber+ ","+sd.saveDatas[0].accountNumber+","+ sd.saveDatas[0].password);

如下图所示
如何用 LitJson 插件 对 Json 数据进行解析
这也印证了上面说的,虽然存进去的中文会乱码,但不影响解析数据。

不过有时候我们存储的数据非常简单非常少,也需要先写上面两个类 SaveData 和 SaveDatas 吗?答案是不需要的,LitJson 也给我们准备了另外一种创建,解析 Json 数据的方法

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

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

首先,它可以代表一个对象 { },也可以代表一个数组 [ ],它是什么取决于你怎么用它。
当然,你也可以通过 对象.SetJsonType() 显式的指定它的类型,如下图所示
如何用 LitJson 插件 对 Json 数据进行解析
不过即使不指定 JsonData 类型也是没问题的。

创建 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,取值也和字典类似,根据“键”去取值即可。