C#實現(xiàn)讀取寫入Json文件
更新時間:2023年01月25日 16:12:11 作者:暗夜__
這篇文章主要介紹了C#實現(xiàn)讀取寫入Json文件方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
C#讀取寫入Json文件
/// <summary> /// 將序列化的json字符串內(nèi)容寫入Json文件,并且保存 /// </summary> /// <param name="path">路徑</param> /// <param name="jsonConents">Json內(nèi)容</param> private void WriteJsonFile(string path, string jsonConents) { File.WriteAllText(path, jsonConents, System.Text.Encoding.UTF8); } /// <summary> /// 獲取到本地的Json文件并且解析返回對應(yīng)的json字符串 /// </summary> /// <param name="filepath">文件路徑</param> /// <returns></returns> private string GetJsonFile(string filepath) { string json = string.Empty; using (FileStream fs = new FileStream(filepath, FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite)) { using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)) { json = sr.ReadToEnd().ToString(); } } return json; } /// <summary> /// 對象 轉(zhuǎn)換為Json字符串 /// </summary> /// <param name="tablelList"></param> /// <returns></returns> public string toJson(object tablelList) { DataContractJsonSerializer json = new DataContractJsonSerializer(tablelList.GetType()); string finJson = ""; //序列化 using (MemoryStream stream = new MemoryStream()) { json.WriteObject(stream, tablelList); finJson = Encoding.UTF8.GetString(stream.ToArray()); } Debug.Log(tablelList + "JSON數(shù)據(jù)為:" + finJson); return finJson; }
將數(shù)據(jù)寫入Json文件中
部分邏輯代碼
? //需要寫入Json文件中的數(shù)據(jù)集合 ? List<MonsterSpawnPoint> MonsterPos = new List<MonsterSpawnPoint>(); ? //轉(zhuǎn)為string 字符串 ? ? string text = toJson(MonsterPos); ? ? //寫入Json文件 ?filepath文件路徑? ? ? string filepath=Path.Combine(Application.dataPath, "../", "Config_NPC.json"); ? ? ? ?WriteJsonFile(filepath, text);
Json文件
[ ? { ? ? "Direction": 0, ? ? "Index": 9, ? ? "PositionX": 28, ? ? "PositionY": 10, ? ? "PositionZ": 20 ? }, ? { ? ? "Direction": 0, ? ? "Index": 9, ? ? "PositionX": 40, ? ? "PositionY": 10, ? ? "PositionZ": 18 ? }, ? { ? ? "Direction": 0, ? ? "Index": 4, ? ? "PositionX": 21, ? ? "PositionY": 10, ? ? "PositionZ": -8 ? }, ? { ? ? "Direction": 0, ? ? "Index": 4, ? ? "PositionX": 40, ? ? "PositionY": 10, ? ? "PositionZ": -13 ? } ]
讀取Json文件
Json對應(yīng)的數(shù)據(jù)結(jié)構(gòu)
public class MonsterSpawnPoint { public long Index;//怪物索引 public int PositionX;//怪物X坐標(biāo) public int PositionY;//怪物Y坐標(biāo) public int PositionZ;//怪物Z坐標(biāo) public int Direction; } //讀取指定數(shù)據(jù)集合Json MonsterSpawnPoint[] monsterPoints = LitJson.JsonMapper.ToObject<MonsterSpawnPoint[]>(GetJsonFile(filepath)); //讀取Json 通過字符串 索引取得Json表中的值 LitJson.JsonData jsonData = LitJson.JsonMapper.ToObject(GetJsonFile(fillePath)); foreach (JsonData item in jsonData) { JsonData id_data = item["Id"];//通過字符串 索引取得鍵值對的值 JsonData name_data = type == InitType.Monster ? item["Name"] : item["NPCName"];//通過字符串 索引取得鍵值對的值 tempData = new Dropdown.OptionData(); tempData.text = $"[{id_data}]{name_data}"; }
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Datagridview使用技巧(9)Datagridview的右鍵菜單
這篇文章主要為大家詳細(xì)介紹了Datagridview使用技巧,Datagridview的右鍵菜單,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05淺談C# StringBuilder內(nèi)存碎片對性能的影響
這篇文章主要介紹了淺談StringBuilder內(nèi)存碎片對性能的影響,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03