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);
// }
// }
//}
}
}
}