之前在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());
}
}
网友评论