需要在工程里导入 JsonNet 包
public class NewBehaviourScript : MonoBehaviour
{
[SerializeField]
public List<JsonData> JsonDatas = new List<JsonData>();
public void Start()
{
JsonDatas.Add(new JsonData()
{
name = "aaa",
url = "111",
});
JsonDatas.Add(new JsonData()
{
name = "bbb",
url = "222",
});
Save(JsonDatas);
}
/// <summary>
/// 数据写入到JSON文件
/// </summary>
/// <param name="jsonData">数据列表</param>
public void Save(List<JsonData> jsonData)
{
//设置json文件位置
string filePath = Application.dataPath + @"/Configs/JsonPerson.json";
//找到当前路径
FileInfo file = new FileInfo(filePath);
//判断有没有文件,有则打开文件,,没有创建后打开文件
StreamWriter sw = file.CreateText();
//ToJson接口将你的列表类传进去,,并自动转换为string类型
string json = JsonConvert.SerializeObject(jsonData );
//将转换好的字符串存进文件,
sw.WriteLine(json);
//注意释放资源
sw.Close();
sw.Dispose();
AssetDatabase.Refresh();
}
/// <summary>
/// 读取保存数据的方法
/// </summary>
/// <summary>
/// 读取保存数据的方法
/// </summary>
public void LoadPerson(ref List<JsonData> jsonData)
{
TextAsset asset = AssetDatabase .LoadAssetAtPath("Assets/Configs/JsonPerson.json",typeof(Object )) as TextAsset;
if (!asset) //读不到就退出此方法
return;
string strdata = asset.text;
jsonData= JsonConvert.DeserializeObject< List<JsonData>>(strdata);
Debug.Log(jsonData.Count);
}
/// <summary>
/// 删除
/// </summary>
/// <param name="jsonData">JSON数据转换为列表</param>
/// <param name="data">要删除的数据</param>
public void RemoveData(ref List<JsonData> jsonData,string data)
{
//现读取到json数据
LoadPerson(ref jsonData);
for (int i = 0; i < jsonData.Count ; i++)
{
//判断是否有要删除的数据
if (jsonData[i].name == data)
{
//删除数据
jsonData.Remove(jsonData[i]);
}
}
Debug.Log(jsonData.Count);
//重新保存写入JSON文件
Save(jsonData);
}
}
/// <summary>
/// 需要存储的数据
/// </summary>
public class JsonData
{
public string name;
public string url;
}
执行完上面的代码,工程里会有一个json文件打开后
如下所示
这就已经把数据以JSON的形式存储到本地了.
public void Start()
{
RemoveData(ref JsonDatas, "aaa");
}
再观察JSON文件 效果如下