读取JSON文件 如何在Unity中读取Json文件中的数据
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文件如下图:
当然,游戏中这么简单是远远不够的,这只是操作方法,后面的还需要大家慢慢精炼