JsonTestController.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using Microsoft.AspNetCore.Http;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Newtonsoft.Json;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.IO;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using TEAMModelBI.Models;
  10. namespace TEAMModelBI.Controllers.BITest
  11. {
  12. [Route("jsontest")]
  13. [ApiController]
  14. public class JsonTestController : ControllerBase
  15. {
  16. public JsonTestController()
  17. {
  18. }
  19. /// <summary>
  20. /// 获取
  21. /// </summary>
  22. /// <returns></returns>
  23. [HttpPost("get-sysconfig")]
  24. public async Task<IActionResult> GetSysConfig()
  25. {
  26. var sysCinfig = ReadJsonFileToList();
  27. Write(sysCinfig);
  28. return Ok(new { state = 200 });
  29. }
  30. /// <summary>
  31. /// 获取本地的json文件转成List
  32. /// </summary>
  33. /// <returns></returns>
  34. public static List<SysConfig> ReadJsonFileToList()
  35. {
  36. //将Json转换回列表
  37. var directorypath = Directory.GetCurrentDirectory();
  38. string strFileName = directorypath + "\\JsonFile\\SystemConfig.json";
  39. string jsonData = GetJsonFile(strFileName);
  40. Console.WriteLine(jsonData);
  41. //反序列化Json字符串内容为对象
  42. List<SysConfig> jsondata = JsonConvert.DeserializeObject<List<SysConfig>>(jsonData);
  43. return jsondata;
  44. }
  45. /// <summary>
  46. /// 获取到本地的Json文件并且解析返回对应的json字符串
  47. /// </summary>
  48. /// <param name="filepath"></param>
  49. /// <returns></returns>
  50. public static string GetJsonFile(string filepath)
  51. {
  52. string json = string.Empty;
  53. using (FileStream fs = new FileStream(filepath, FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite))
  54. {
  55. Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
  56. using (StreamReader sr = new(fs, Encoding.GetEncoding("GB2312")))
  57. {
  58. json = sr.ReadToEnd().ToString();
  59. }
  60. }
  61. return json;
  62. }
  63. /// <summary>
  64. /// 把对象写入到json文件中
  65. /// </summary>
  66. /// <param name="obj"></param>
  67. /// <returns></returns>
  68. public static void Write(List<SysConfig> jsonData)
  69. {
  70. var directorypath = Directory.GetCurrentDirectory();
  71. string strFileName = directorypath + "\\JsonFile\\SystemConfig.json";
  72. string ListJson = JsonConvert.SerializeObject(jsonData);
  73. System.IO.File.WriteAllText(strFileName, ListJson); //有缩进
  74. ////无缩进
  75. //Console.WriteLine(ListJson);
  76. //writeJsonFile(strFileName, ListJson);
  77. ////将序列化的json字符串内容写入Json文件,并且保存
  78. //void writeJsonFile(string path, string jsonConents)
  79. //{
  80. // using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, FileShare.ReadWrite))
  81. // {
  82. // //如果json文件中有中文数据,可能会出现乱码的现象,那么需要加上如下代码
  83. // Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
  84. // using (StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("GB2312")))
  85. // {
  86. // sw.WriteLine(jsonConents);
  87. // }
  88. // }
  89. //}
  90. }
  91. }
  92. }