C#實(shí)現(xiàn)Json文件讀寫(xiě)的方法代碼
JSON是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于 ECMAScript的一個(gè)子集,采用完全獨(dú)立于編程語(yǔ)言的文本格式來(lái)存儲(chǔ)和表示數(shù)據(jù)。簡(jiǎn)潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語(yǔ)言。 易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。
首先在項(xiàng)目中引用第三方庫(kù):Newtonsoft.Json

編寫(xiě)模型類,定義Json結(jié)構(gòu)
//模型類,定義Json結(jié)構(gòu)
public class BaseModel
{
public List<ModelData> list_groupA { get; set; } = new List<ModelData>();
public List<ModelData> list_groupB { get; set; } = new List<ModelData>();
public List<ModelData> list_groupC { get; set; } = new List<ModelData>();
}
public class ModelData
{
public ModelData(int iD, int pointX, int pointY, string groupName)
{
ID = iD;
PointX = pointX;
PointY = pointY;
GroupName = groupName;
}
public int ID { get; set; }
public int PointX { get; set; }
public int PointY { get; set; }
public string GroupName { get; set; }
}
序列化Json字符串,并保存文件
public void SaveToFile(string filePath)
{
if (filePath != "")
{
List<ModelData> list = new List<ModelData>(100);
for (int i = 1; i <= 100; i++)
{
if (i < 50)
{
list.Add(new ModelData(i, 10, 10, "集合A"));
}
else if (i >= 50 && i < 75)
{
list.Add(new ModelData(i, 20, 20, "集合B"));
}
else
{
list.Add(new ModelData(i, 30, 30, "集合C"));
}
}
BaseModel model = new BaseModel();
model.list_groupA = list.Where(x => x.GroupName == "集合A").ToList();
model.list_groupB = list.Where(x => x.GroupName == "集合B").ToList();
model.list_groupC = list.Where(x => x.GroupName == "集合C").ToList();
string json2 = JsonConvert.SerializeObject(model);
WriteJsonFile(filePath, json2);
}
}
/// <summary>
/// 將序列化的json字符串內(nèi)容寫(xiě)入Json文件,并且保存
/// </summary>
/// <param name="path">路徑</param>
/// <param name="jsonConents">Json內(nèi)容</param>
public void WriteJsonFile(string path, string jsonConents)
{
try
{
File.WriteAllText(path, jsonConents, System.Text.Encoding.UTF8);
MessageBox.Show("保存成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
如果不需要分組可將序列化對(duì)象改為list,即:
string json2 = JsonConvert.SerializeObject(list);
讀取文本字符串反序列化,獲取指定字段值
public void ReadJsonFile(string readFilePath)
{
if (File.Exists(readFilePath))
{
//獲取文件內(nèi)容
string readString = File.ReadAllText(readFilePath);
//反序列化:?jiǎn)谓M
/*JArray ja = (JArray)JsonConvert.DeserializeObject(readString);
int jaCount = ja.Count;
ja[0]["PinHight"].ToString();*/
//反序列化
JObject jo = JsonConvert.DeserializeObject<JObject>(readString);
int joCount = jo.Count;
//獲取指定位置值
int str = jo["list_groupA"][0].Value<int>("ID");
}
}
讀取Json文件,更新字段
/// <summary>
/// 更新字段
/// </summary>
/// <param name="fileName"></param>
public void UpdateJsonFile(string fileName)
{
string jsonString = File.ReadAllText(fileName, System.Text.Encoding.UTF8);//讀取文件
JObject jobject = JObject.Parse(jsonString);//解析成json
jobject["list_student"][0]["ID"] = 111;//替換需要的文件
string convertString = Convert.ToString(jobject);//將json裝換為string
File.WriteAllText(fileName, convertString, System.Text.Encoding.UTF8);//將內(nèi)容寫(xiě)進(jìn)jon文件中
}總結(jié)
到此這篇關(guān)于C#實(shí)現(xiàn)Json文件讀寫(xiě)的文章就介紹到這了,更多相關(guān)C# Json文件讀寫(xiě)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)對(duì)文件進(jìn)行加密保護(hù)的示例代碼
C#中LINQ的Select與SelectMany函數(shù)使用
C#使用CefSharp自定義緩存實(shí)現(xiàn)

