Json在Unity中的使用
Json是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在 JS 语言中一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。关于Json的格式大概总结为四点:
·对象表示为键值对
·数据由逗号分隔
·花括号保存对象
·方括号保存数组
其实Json就是一串字符串,大家在书写json的格式的时候如果不确定,可以通过在线Json校验格式化工具(BeJson)进行测试。基本格式如下:
{“name”:“孙悟空”}
{“name”:“孙悟空”,“age”:“18”}
[{“name”:“孙悟空”,“age”:521},{“name”:“猪悟能”}]
在Unity开发的时候需要引入一个LitJson类库,放到Plugins文件夹下就可以了,大家可以在我的网盘中下载链接:https://pan.baidu.com/s/1fPQ2Ei2CHMwXUYTfLL1sqw ;提取码:oyr0 。
下面直接给出代码案例:
using UnityEngine;
using LitJson;
class TravelOfWest
{
public string name;
public int age;
public string skill;
//无参构造方法
public TravelOfWest()
{
Debug.Log("调用无参构造函数");
}
//有参构造方法
public TravelOfWest(string name, int age, string skill)
{
this.name = name;
this.age = age;
this.skill = skill;
Debug.Log("调用有参构造函数");
}
}
public class JsonDemo1 : MonoBehaviour
{
string jsonStr = "{'name':'孙悟空','age':567,'skill':'火眼金睛'}";
void Start()
{
CreateJson();
CreateCS();
}
/// <summary>
/// 将Json字符串转成C#数据
/// </summary>
void CreateCS()
{
//无参的
TravelOfWest wuKong = JsonMapper.ToObject<TravelOfWest>(jsonStr);
Debug.Log("无参:"+wuKong.name + " " + wuKong.age + " " + wuKong.skill);
//有参的
TravelOfWest wuko = new TravelOfWest("11", 3,"sk");
JsonData data = JsonMapper.ToObject<JsonData>(jsonStr);
wuko.name = data[0].ToString();
wuko.age = System.Convert.ToInt32(data[1].ToString());
wuko.skill = data[2].ToString();
Debug.Log("------------");
Debug.Log("有参:"+wuko.name + " " + wuko.age + " " + wuko.skill);
}
/// <summary>
/// 将一些C#数据转成Json格式的数据
/// </summary>
void CreateJson()
{
//伪造数据
string[] names = new string[] { "孙悟空", "猪悟能", "沙悟净", "白龙马" };
int[] ages = new int[] { 567, 3000, 700,324 };
string[] skills = new string[] { "火眼金睛", "弱水三千", "茹毛饮血", "浪里白龙" };
string[] adress = new string[] { "花果山", "高老庄", "沙河", "东海" };
//创建Json对象
JsonData data = new JsonData();
//设置Json对象为数组类型
data.SetJsonType(JsonType.Array);
for (int i = 0; i < names.Length; i++)
{
JsonData person = new JsonData();
person["name"] = names[i];
person["ages"] = ages[i];
person["skill"] = skills[i];
person["adress"] = adress[i];
//把当前对象添加到data数组中
data.Add(person);
}
string json = data.ToJson();
Debug.Log(json);
}
}
主要就是JsonMapper.ToObject方法和JsonData类的运用。