【.Net Core】.Net Core对json文件进行数据读取和插入操作(.Net操作json文件读取和写入)

前言

在项目中我们经常会遇到要把数据按照固定格式存储到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);

好了,至此对json文件的操作(读取和插入)已经操作完成了,我之前看过一个帖子要比这种方式简单些,但是当时没有记录下来,大伙儿如果有好的方法欢迎评论区留言,多谢

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起来学吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值