美文网首页
U3D LitJson

U3D LitJson

作者: Lif68 | 来源:发表于2020-05-22 16:13 被阅读0次

    之前在UE4编写json字符串使用的是VaRest,U3D里面使用LitJson来进行json字符串的编写。

    直接贴代码了
    简要说明一下,三部份的内容:
    object和json之间的转换(结构体也可以这样转成json字符串)
    以字典索引器的方式进行对JsonData的访问
    JsonReader 和 JsonWirter用于Json判空和读写

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using System;
    using LitJson;
    using System.Text;
    
    public class JSON : MonoBehaviour
    {
        // Start is called before the first frame update
        void Start()
        {
            Debug.Log(Person2Json());
            Debug.Log(Json2Person(Person2Json()).Age);
    
            WirteJson();
        }
    
        // Update is called once per frame
        void Update()
        {
    
        }
        //JsonMapper.ToJson将制定数据结构转换为Json字符
        public class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
            public DateTime BirthDay { get; set; }
        }
        public String Person2Json()
        {
            Person Me = new Person();
            Me.Name = "Lif68";
            Me.Age = 23;
            Me.BirthDay = new DateTime(1997, 06, 08);
            return JsonMapper.ToJson(Me);
        }
        public Person Json2Person(string _jsonString)
        {
            return JsonMapper.ToObject<Person>(_jsonString);
        }
        //JsonData按照索引器的方式访问指定的元素
        string jsonObject = @"
            {
                    ""Album"":
                    {
                        ""Name"":""Random Access Memories"",
                        ""Artist"":""Daft Punk"",
                        ""Year"":2013,
                        ""Tracks"":[""Random Access Memories"",""None"",""Null""]
                    }
            }";
        public void LoadAlbumData(string _jsonString)
        {
            JsonData jData = JsonMapper.ToObject(_jsonString);
            //转换为自然类型
            int year = (int)jData["Album"]["Year"];
            string tracks = (string)jData["Album"]["Tracks"];
            //访问数组内容
            Debug.Log(jData["Album"]["Tracks"][0]);
        }
        //JsonReader和JsonWriter用于判空
        string sample = @"
            {
                ""name""  : ""lif68"",
                ""age""   : 23,
                ""awake"" : true,
                ""birthday""  : 1997,06,08,
                ""note""  : [""harder"",""better"",""faster"",""stronger""]
            }";
        public void PrintJson(string _jsonString)
        {
            JsonReader jReader = new JsonReader(_jsonString);
    
            while (jReader.Read())
            {
                string type = jReader.Value != null ? jReader.Value.GetType().ToString() : "";
                Debug.Log(type);
            }
        }
        public void WirteJson()
        {
            StringBuilder strb = new StringBuilder();
            JsonWriter jWriter=new JsonWriter(strb);
    
            //写Json数组
            jWriter.WriteArrayStart();
            jWriter.Write(114);
            jWriter.Write(514);
            jWriter.Write(1919);
            jWriter.Write(810);
    
            //写Json Object
            jWriter.WriteObjectStart();
            jWriter.WritePropertyName("Color");
            jWriter.Write("azure");
            jWriter.WriteObjectEnd();
    
            jWriter.WriteArrayEnd();
    
            Debug.Log(strb.ToString());
    
        }
    
    }
    
    

    相关文章

      网友评论

          本文标题:U3D LitJson

          本文链接:https://www.haomeiwen.com/subject/oboqahtx.html