Josn是一种轻量级的数据交换格式,JSON能够描述四种简单的类型(字符串、数字、布尔值及null)和两种结构化类型(对象及数组),在Unity里经常用Json来处理大量的字符串,容易解析,效率非常快。
基本结构
1、语法
- 数据存在键值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
eg:表示两个学生的基本信息{"Student":[{"name":"Tom","age":19,"gender:"M"}, {"name":"Marry","age":22,"gender:"W"} ] }
2、Json开发
使用两种类库:(需要将System.Json.dll和LitJson.dll放到工程目录下)
- System.Json(生成Json文件)
- LitJson(解析Json文件)
(1)System.Json的类
- JsonArray类 JsonArray是0个或多个JsonValue对象的有序序列
- JsonObject类 JsonObject是一个无序的0个或更多个的键值对集合
- JsonValue类 一个具体的Json对象的Value值
示例
在Unity中创建一个空物体,在其上挂载一个脚本,命名为JsonScript.cs,写个方法来在Unity中生成一个Json文件,然后再写个方法来读取这个Json文件。前提要导入System.Json.dll和LitJson.dll两个库文件到Unity中。
- 代码如下:
using UnityEngine; using System.Collections; using System.Json; using LitJson; using System.IO; public class JsonScript : MonoBehaviour { //文件要保存的路径 string path; void Start () { path = Application.streamingAssetsPath + "/JsonTest.txt"; //CreateJson(); ReadJson(); } void CreateJson() { //创建一个json对象,相当于一个{} JsonObject js = new JsonObject(); //定义一个json的value值 JsonValue name = "洛克萨斯之手"; //把该值加到js对象里 js.Add("name", name); //Q技能 JsonObject q = new JsonObject(); q.Add("Q技能", "大杀四方"); JsonArray time = new JsonArray(9,8,7,6,5); q.Add("冷却时间", time); q.Add("消耗", 30); //E技能 JsonObject e = new JsonObject(); e.Add("E技能", "无情铁手"); e.Add("冷却时间", new JsonArray(24, 21, 18, 15, 12)); JsonArray skill = new JsonArray(q, e); js.Add("技能", skill); //写入流路径 StreamWriter writer = new StreamWriter(path); js.Save(writer); //写入流把数据写入文档后自动更新 writer.AutoFlush = true; //关闭流 writer.Close(); } //解析json文件 void ReadJson() { //fileInfo类提供了可以创建/打开/移动/拷贝一个文件 FileInfo file = new FileInfo(path); //打开文件 StreamReader reader= file.OpenText(); //读取文件里的内容,从流的当前位置到末尾读取流 string str = reader.ReadToEnd(); //使用JsonMapper类把字符串转成json对象 JsonData data = JsonMapper.ToObject(str); Debug.Log(data["技能"][0]["冷却时间"][0]); } }
生成的Json文件如下图:
Comments