using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Threading.Tasks; using TEAMModelBI.Models; namespace TEAMModelBI.Controllers.BITest { [Route("jsontest")] [ApiController] public class JsonTestController : ControllerBase { public JsonTestController() { } /// /// 获取 /// /// [HttpPost("get-sysconfig")] public async Task GetSysConfig() { var sysCinfig = ReadJsonFileToList(); Write(sysCinfig); return Ok(new { state = 200 }); } /// /// 获取本地的json文件转成List /// /// public static List ReadJsonFileToList() { //将Json转换回列表 var directorypath = Directory.GetCurrentDirectory(); string strFileName = directorypath + "\\JsonFile\\SystemConfig.json"; string jsonData = GetJsonFile(strFileName); Console.WriteLine(jsonData); //反序列化Json字符串内容为对象 List jsondata = JsonConvert.DeserializeObject>(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(fs, Encoding.GetEncoding("GB2312"))) { json = sr.ReadToEnd().ToString(); } } return json; } /// /// 把对象写入到json文件中 /// /// /// public static void Write(List jsonData) { var directorypath = Directory.GetCurrentDirectory(); string strFileName = directorypath + "\\JsonFile\\SystemConfig.json"; string ListJson = JsonConvert.SerializeObject(jsonData); System.IO.File.WriteAllText(strFileName, ListJson); //有缩进 ////无缩进 //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); // } // } //} } } }