unity 通过JsonUtility实现json数据的本地保存和读取

本文主要讲解json数据在本地的保存和读取,使用的是unity5之后提供的JsonUtility工具。

一、关于json数据的保存

在实际开发中,有时候可能涉及到大量数据保存到本地,以便于下次客户端的使用,这时候将数据保存成json文件到本地就比较方便了,具体实现方法如下:

文件的创建,下面为便于编辑器和手机端都方便使用,我们将文件保存到StreamingAssets中:

    //保存json文件路径
    string JsonPath()
    {
        return Application.streamingAssetsPath + "/JsonTest.json";
    }

创建要保存的数据格式,这里创建了对应的玩家数据类

public class JsonData
{
    public List lsPlayerMessage;
}

//玩家信息
[Serializable]
public class PlayerMessage
{
    public int PlayerId;
    public string PlayerName;
    public List PlayerEquip;
}

//装备信息
[Serializable]
public class EquipMessage
{
    public int EquipId;
    public string EquipName;
}

将对应的数据保存到对应的容器中,这里随便添加了一些初始值 ,进行测试:

  //初始化json数据
    void InitJsonData()
    {
        jsonData.lsPlayerMessage = new List();
        PlayerMessage playerMessage = new PlayerMessage();
        playerMessage.PlayerId = 1;
        playerMessage.PlayerName = "Json";
        playerMessage.PlayerEquip = new List();
        EquipMessage equipMessage = new EquipMessage();
        equipMessage.EquipId = 101;
        equipMessage.EquipName = "Gun";
        playerMessage.PlayerEquip.Add(equipMessage);
        jsonData.lsPlayerMessage.Add(playerMessage);
    }

最后是讲上面json数据保存到本地:

    //保存json数据到本地
    void SaveJson()
    {
        //如果本地没有对应的json 文件,重新创建
        if (!File.Exists(JsonPath()))
        {
            File.Create(JsonPath());
        }
        string json = JsonUtility.ToJson(jsonData, true);
        File.WriteAllText(JsonPath(), json);
        Debug.Log("保存成功");
    }

运行结果如下:

unity 通过JsonUtility实现json数据的本地保存和读取_第1张图片

二、关于json文件的读取:

  //从本地读取json数据
    void ReadJson()
    {
        if (!File.Exists(JsonPath()))
        {
            Debug.LogError("读取的文件不存在!");
            return;
        }
        string json = File.ReadAllText(JsonPath());
        JsonData jsonTemp = new JsonData();
        jsonTemp = JsonUtility.FromJson(json);
        Debug.Log("玩家数量:" + jsonTemp.lsPlayerMessage.Count);
        for (int i = 0; i < jsonTemp.lsPlayerMessage.Count; i++)
        {
            Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerId);
            Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerName);
            for (int j = 0; j < jsonTemp.lsPlayerMessage[i].PlayerEquip.Count; j++)
            {
                Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerEquip[j].EquipId);
                Debug.Log(jsonTemp.lsPlayerMessage[i].PlayerEquip[j].EquipName);
            }
        }
    }

运行结果如下:

unity 通过JsonUtility实现json数据的本地保存和读取_第2张图片

这就是全部的关于josn的数据本地和保存。

工程链接:https://pan.baidu.com/s/1Rz6rpNj1jPS0t9NklFOhRw

想了解更过unity相关知识,可以关注下方公众号,或者添加QQ群:879354767,不定期更新相关教程:

unity 通过JsonUtility实现json数据的本地保存和读取_第3张图片

你可能感兴趣的:(unity 通过JsonUtility实现json数据的本地保存和读取)