Unity3D:数据持久化存储解决方案(二)-Json

Unity3D:Json字符串解析与Json文件的读写

一、Json是什么?

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。(百度百科)

二、Json字符串表示方式

1.表示对象

{"Name":"野猪","HP":"100"}

2.表示数组

[{"Name":"野猪","HP":"100"},{"Name":"豺狼","HP":"120"}]

三、Json字符串的转换和解析

Unity常用的对于Json有两种主流使用方式:Unity5.3版本以后增加的JsonUtility类;还有LitJson,是一个比较稳定的Json开源项目,需要下载LitJson.dll类库,并且引入命名空间Using LitJson。
本文讲解第二种方式。

1.Json的转换

public class Master
    {
        public string Name;
        public int id;
    }
     void Awake()
    {
        //带类转换
        Master m1 = new Master();
        m1.Name = "哥布林";
        m1.id = 1;
        Master m2 = new Master();
        m2.Name = "食尸鬼";
        m2.id = 2;
        string JsonStrM1 = JsonMapper.ToJson(m1);//转换
 
       //不需要类的创建
        JsonData all = new JsonData();
        JsonData jd = new JsonData();
        jd["Name"] = "哥布林";
        jd["id"] = 1;
        JsonData jd2 = new JsonData();
        jd2["Name"] = "食尸鬼";
        jd2["id"] = 2;
        JsonData jsonDataArray = new JsonData();
        jsonDataArray.Add(jd);
        jsonDataArray.Add(jd2);
        all["s"] = jsonDataArray;
    }

2.Json的解析

带类的解析
 		Master m = JsonMapper.ToObject<Master>(JsonStrM1);//解析

JsonData的解析
		JsonData jsonDatas = JsonMapper.ToObject(ReadStr);
        JsonData jsonData = jsonDatas["s"];

四、Json文件的读取和写入

1.写入

public void SaveJson(JsonData jsonData)//保存文件
    {
        string Path = Application.dataPath + "/" + JsonPath + ".json";
        if (!File.Exists(Path))
        {
            File.Create(Path);          
        }
        string jsonStr = JsonMapper.ToJson(jsonData);
        File.WriteAllText(Path, jsonStr);
        Debug.Log("保存成功");
    }

2.读取

public void ReadFileJson(string Path)
    {
        if (!File.Exists(Application.dataPath + "/" + JsonPath + ".json"))
        {
            Debug.Log("查找的文件不存在");
            return;
        }
        string path = Application.dataPath + "/" + JsonPath + ".json";
        string ReadStr = File.ReadAllText(path);
        Debug.Log(ReadStr);
        JsonData jsonDatas = JsonMapper.ToObject(ReadStr);
        JsonData jsonData = jsonDatas["s"];
        foreach (JsonData jsonData1 in jsonData)
        {
            Debug.Log(jsonData1["Name"].ToString());
            Debug.Log(int.Parse(jsonData1["id"].ToString()));
        }
    
    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值