Unity3D:Json字符串解析与Json文件的读写
一、Json是什么?
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。(百度百科)
二、Json字符串表示方式
1.表示对象
{"Name":"野猪","HP":"100"}
2.表示数组
[{"Name":"野猪","HP":"100"},{"Name":"豺狼","HP":"120"}]
三、Json字符串的转换和解析
Unity常用的对于Json有两种主流使用方式:Unity5.3版本以后增加的JsonUtility类;还有LitJson,是一个比较稳定的Json开源项目,需要下载LitJson.dll类库,并且引入命名空间Using LitJson。
本文讲解第二种方式。
1.Json的转换
public class Master
{
public string Name;
public int id;
}
void Awake()
{
//带类转换
Master m1 = new Master();
m1.Name = "哥布林";
m1.id = 1;
Master m2 = new Master();
m2.Name = "食尸鬼";
m2.id = 2;
string JsonStrM1 = JsonMapper.ToJson(m1);//转换
//不需要类的创建
JsonData all = new JsonData();
JsonData jd = new JsonData();
jd["Name"] = "哥布林";
jd["id"] = 1;
JsonData jd2 = new JsonData();
jd2["Name"] = "食尸鬼";
jd2["id"] = 2;
JsonData jsonDataArray = new JsonData();
jsonDataArray.Add(jd);
jsonDataArray.Add(jd2);
all["s"] = jsonDataArray;
}
2.Json的解析
带类的解析
Master m = JsonMapper.ToObject<Master>(JsonStrM1);//解析
JsonData的解析
JsonData jsonDatas = JsonMapper.ToObject(ReadStr);
JsonData jsonData = jsonDatas["s"];
四、Json文件的读取和写入
1.写入
public void SaveJson(JsonData jsonData)//保存文件
{
string Path = Application.dataPath + "/" + JsonPath + ".json";
if (!File.Exists(Path))
{
File.Create(Path);
}
string jsonStr = JsonMapper.ToJson(jsonData);
File.WriteAllText(Path, jsonStr);
Debug.Log("保存成功");
}
2.读取
public void ReadFileJson(string Path)
{
if (!File.Exists(Application.dataPath + "/" + JsonPath + ".json"))
{
Debug.Log("查找的文件不存在");
return;
}
string path = Application.dataPath + "/" + JsonPath + ".json";
string ReadStr = File.ReadAllText(path);
Debug.Log(ReadStr);
JsonData jsonDatas = JsonMapper.ToObject(ReadStr);
JsonData jsonData = jsonDatas["s"];
foreach (JsonData jsonData1 in jsonData)
{
Debug.Log(jsonData1["Name"].ToString());
Debug.Log(int.Parse(jsonData1["id"].ToString()));
}
}