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); } }
創建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"]); } } }
解析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"]); } } }
