Unity数据持久化——LitJson、JsonUtility

11 篇文章 0 订阅

LitJson是第三方插件

JsonUtility是Untiy自带的

一、JsonUtility

创建Json

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//先导入System命名空间才有Serializable关键字
using System;
//使用JsonUtility必须要在转成Json数据的类上加关键字
[Serializable]
public class Person{
    public string name;
    public int age;

}
public class JsonUtilityDemo : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Person person=new Person();
        person.name="李逍遥";
        person.age=18;
        //转成json字符串
        string jsonStr=JsonUtility.ToJson(person);
        Debug.Log(jsonStr);
    }

  
}

解析Json

 //解析{"name":李逍遥,"age":18}
 Person s=JsonUtility.FromJson<Person>(jsonStr);
 //<>中填写的是这个Json最外层的类型,在例子中只有一个数据就是Person型
 Debug.Log(s.name);
//输出的是李逍遥

二、LitJson

使用前的准备工作

需要在Unity项目中创建一个文件夹Plugins,然后将LitJson.dll放入文件夹下即可(文件夹必须为这个名字)

第一种方法创建和解析Json

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//导入命名空间
using LitJson;

public class Hero{
    public string name;
    public int age;

}
public class LitJsondemo : MonoBehaviour
{
    void Start()
    {
        func1();
    }
    void func1()
    {
        Hero hero1=new Hero();
        hero1.name="超人";
        hero1.age=40;
        //转化成Json字符串
        string jsonStr=JsonMapper.ToJson(hero1);
        Debug.Log(jsonStr);
        //解析Json字符串
        Hero ho=JsonMapper.ToObject<Hero>(jsonStr);
        Debug.Log(ho.name);

    }
}

第二种方法创建和解析Json

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//导入命名空间
using LitJson;

public class Hero{
    public string name;
    public int age;

}
public class LitJsondemo : MonoBehaviour
{
    void Start()
    {
        //func1();
        func3();
    }
    //假设需要构建{“name”:“超人”,power:90}这个Json,使用方法二进行创建JSON不需要对应的Hero类
    void func2(){
        JsonData jd=new JsonData();
        //jd.SetJsonType(JsonType.Array);设置jd中的
        jd["name"]="超人";
        jd["power"]=90;
        jd.ToJson();

        //假设需要构建{"heros":[{"name":"超人","power":90},{"name":蝙蝠侠,“power”:80}]}
        JsonData herosJD=new JsonData();
        JsonData hero1JD=new JsonData();
        hero1JD["name"]="超人";
        hero1JD["power"]=90;
        JsonData hero2JD=new JsonData();
        hero2JD["name"]="蝙蝠侠";
        hero2JD["power"]=80;
        JsonData heros=new JsonData();
        heros.SetJsonType(JsonType.Array);
        heros.Add(hero1JD);
        heros.Add(hero2JD);
        herosJD["heros"]=heros;
    }
    //第二种方法解析JSON
    void func3(){
        //假设接收到这个Json
        string jsonStr="{'heros':[{'name':'超人','power':90},{'name':'蝙蝠侠','power':80}]}";
        JsonData herosJD=JsonMapper.ToObject(jsonStr);
        JsonData heros=herosJD["heros"];
        //heros[1]["name"];这样就能够获取到蝙蝠侠
        foreach (JsonData heroJD in heros)
        {
            Debug.Log(heroJD["name"].ToString());
        }
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值