Unity3D_(數據)LitJson創建和解析Json


 

 

  LitJson github:  傳送門

  JsonUtility創建和解析Json  傳送門

  LitJson.dll百度雲盤  傳送門  密碼:p1py  

  

  加載LitJson.dll到Unity中

  在Assets文件夾下創建一個Plugins文件(文件名不得有錯),把LitJson.dll放進去

  新建一個LitJson_Gary.cs腳本,掛在到GameObject上

 

 

第一種使用LitJson創建和解析Json

  好處:邏輯清晰,適用於稍微復雜的Json類型,適用於層級復雜情況

  壞處:需要單獨寫類,寫的代碼稍微多一些

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;

public class Hero
{
    public string name;
    public int power;
}

public class Heros
{
    public Hero[] heros;
}

public class LitJson_Gary : MonoBehaviour {

    // Use this for initialization
    void Start () {
        func1();
    }
    
    void func1()
    {
        //創建Json
        //{'heros':[{'name':'Gary','power':90},{'name':'Gary2','power':80}]}

        Hero hero1 = new Hero();
        hero1.name = "Gary";
        hero1.power = 90;
        Hero hero2 = new Hero();
        hero2.name = "Gary2";
        hero2.power = 80;

        Heros heros = new Heros();
        heros.heros = new Hero[] {hero1,hero2};

        string jsonStr = JsonMapper.ToJson(heros);
        Debug.Log(jsonStr);

        //解析Json
        Heros newHeros = JsonMapper.ToObject<Heros>(jsonStr);
        Debug.Log(newHeros.heros[0].name);

    }
}
LitJson_Gary.cs

 

  創建Json類型

    public class Hero
    {
        public string name;
        public int power;
    }

    public class Heros
    {
        public Hero[] heros;
    }

 

  創建Json數據

  {'heros':[{'name':'Gary','power':90},{'name':'Gary2','power':80}]}

    Hero hero1 = new Hero();
        hero1.name = "Gary";
        hero1.power = 90;
        Hero hero2 = new Hero();
        hero2.name = "Gary2";
        hero2.power = 80;

        Heros heros = new Heros();
        heros.heros = new Hero[] {hero1,hero2};

        string jsonStr = JsonMapper.ToJson(heros);
        Debug.Log(jsonStr);

 

  解析Json

     Heros newHeros = JsonMapper.ToObject<Heros>(jsonStr);
     Debug.Log(newHeros.heros[0].name);

 

 

第二種使用LitJson創建和解析Json

  好處:代碼簡單,適用於層級簡單情況

  壞處:當層級比較復雜的時候,比較容易出錯

 

  創建Json

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;

public class Hero
{
    public string name;
    public int power;
}

public class Heros
{
    public Hero[] heros;
}

public class LitJson_Gary : MonoBehaviour {

    // Use this for initialization
    void Start () {
        fun2();
    }
    
    void fun2()
    {
        //創建Json
        //簡單類型:{'name':'Gary','power':90}
        JsonData demo = new JsonData();
        //demo.SetJsonType(JsonType.Object);
        demo["name"] = "Gary";
        demo["power"] = 90;
        Debug.Log(demo.ToJson());

        //復雜類型:{'heros':[{'name':'Gary','power':90},{'name':'Gary2','power':80}]}
        JsonData demos = new JsonData(); //{}
        JsonData demo1 = new JsonData();
        demo1["name"] = "Gary1";
        demo1["power"] = 90;
        JsonData demo2 = new JsonData();
        demo2["name"] = "Gary2";
        demo2["power"] = 80;


        demos.SetJsonType(JsonType.Array);
        demos.Add(demo1);
        demos.Add(demo2);

        Debug.Log(demos.ToJson());

    }

    void fun3()
    {
        string jsonStr = "{'heros':[{'name':'Gary','power':90},{'name':'Gary2','power':80}]}";
        JsonData demos = JsonMapper.ToObject(jsonStr);
        JsonData heros = demos["heros"];  //[]
        //heros[1]["name"]
        foreach(JsonData heroJd in heros)
        {
            Debug.Log(heroJd["name"].ToString());
            Debug.Log((int)heroJd["power"]);
        }

    }

}
LitJson_Gary.cs

 

 

  解析Json

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;

public class Hero
{
    public string name;
    public int power;
}

public class Heros
{
    public Hero[] heros;
}

public class LitJson_Gary : MonoBehaviour {

    // Use this for initialization
    void Start () {
        fun3();
    }
    

    //解析Json
    void fun3()
    {
        string jsonStr = "{'heros':[{'name':'Gary','power':90},{'name':'Gary2','power':80}]}";
        JsonData demos = JsonMapper.ToObject(jsonStr);
        JsonData heros = demos["heros"];  //[]
        //heros[1]["name"]
        foreach(JsonData heroJd in heros)
        {
            Debug.Log(heroJd["name"].ToString());
            Debug.Log((int)heroJd["power"]);
        }

    }

}
LitJson_Gary.cs

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM