引用地址:【.Net Core】.Net Core对json文件进行数据读取和插入操作(.Net操作json文件读取和写入)_.net core 取json文件的值-CSDN博客
前言
在项目中我们经常会遇到要把数据按照固定格式存储到json文件中,并且后期可以对json文件中的数据进行读取和写入操作,那么接下来咱们一起来操作一下吧
实现方案
1、 创建json文件(NewsData.json)
[
{
"Id": "1",I
"PageUrl": "新闻页面url地址",
"Title": "新闻标题"
},
{
"Id": "2",
"PageUrl": "新闻页面url地址",
"Title": "新闻标题"
}
]
2、读取操作
创建一个JsonOperateService类,并在该类中添加读取json文件的方法,如下
public static List<AiticleJson> ReadJsonFileToList()
{
//将Json转换回列表
var directorypath = Directory.GetCurrentDirectory();
string strFileName = directorypath + "\\NewsData.json";
string jsonData = GetJsonFile(strFileName);
Console.WriteLine(jsonData);
//反序列化Json字符串内容为对象
List<AiticleJson> jsondata = JsonConvert.DeserializeObject<List<AiticleJson>>(jsonData);
return jsondata;
}
//获取到本地的Json文件并且解析返回对应的json字符串
public static string GetJsonFile(string filepath)
{
string json = string.Empty;
using (FileStream fs = new FileStream(filepath, FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite))
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
using (StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("GB2312")))
{
json = sr.ReadToEnd().ToString();
}
}
return json;
}
有一个AiticleJson model类
using System;
using System.Collections.Generic;
using System.Text;
namespace NewsAcquireService
{
public class AiticleJson
{
public string Id { get; set; }
public string Title { get; set; }
public string PageUrl { get; set; }
}
}
3、调用读取方法
List<AiticleJson> newsdata = JsonOperateService.ReadJsonFileToList();
4、写入操作
由于需求是判断json文件中是否已经存在url为固定url的数据,如果不存在写入,如果存在则不操作,那么接下来就说一下如何把新的数据插入到json文件中
/// <summary>
/// 把对象写入到json文件中
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static void Write(List<AiticleJson> jsonData)
{
var directorypath = Directory.GetCurrentDirectory();
string strFileName = directorypath + "\\NewsData.json";
string ListJson = JsonConvert.SerializeObject(jsonData);
Console.WriteLine(ListJson);
writeJsonFile(strFileName, ListJson);
//将序列化的json字符串内容写入Json文件,并且保存
void writeJsonFile(string path, string jsonConents)
{
using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite))
{
//如果json文件中有中文数据,可能会出现乱码的现象,那么需要加上如下代码
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
using (StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("GB2312")))
{
sw.WriteLine(jsonConents);
}
}
}
}
5、调用写入方法
AiticleJson newitem = new AiticleJson();
newitem.Id = article.Id;
newitem.PageUrl = article.PageUrl;
newitem.Title = article.Title;
newsdata.Add(newitem);
JsonOperateService.Write(newsdata);
————————————————
版权声明:本文为CSDN博主「一起来学吧」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liuzhenhe1988/article/details/109102203