U3D LitJson

2020-05-22  本文已影响0人  Lif68

之前在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());

    }

}

上一篇下一篇

猜你喜欢

热点阅读