zoukankan      html  css  js  c++  java
  • 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
    (如需转载学习,请标明出处)
  • 相关阅读:
    异常 集中异步处理
    客户端获取服务端自定义类数据 z
    客户端使用自定义代理类访问WCF服务 z
    学习“要件审判九步法”,正确处理五个关系 z
    “要件审判九步法”具体步骤
    要件审判九步法及其基本价值 z
    WCF Windows Service Using TopShelf and ServiceModelEx z
    [ACM_数据结构] Color the ball [线段树水题][数组开大]
    [ACM_数据结构] HDU 1166 敌兵布阵 线段树 或 树状数组
    [ACM_数据结构] 线段树模板
  • 原文地址:https://www.cnblogs.com/1138720556Gary/p/9948873.html
Copyright © 2011-2022 走看看