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坐標
public int PositionY;//怪物Y坐標
public int PositionZ;//怪物Z坐標
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的右鍵菜單
這篇文章主要為大家詳細介紹了Datagridview使用技巧,Datagridview的右鍵菜單,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
淺談C# StringBuilder內(nèi)存碎片對性能的影響
這篇文章主要介紹了淺談StringBuilder內(nèi)存碎片對性能的影響,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

