为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 JSON.Net 将 JSON 数据写入文件

无法使用 JSON.Net 将 JSON 数据写入文件

C#
海绵宝宝撒 2022-12-31 11:23:32
我正在尝试使用 C# 和 JSON.NET 将数据写入 json 文件,参考此处建议的已接受答案(How to write a JSON file in C#?)。当我运行下面的代码时,我没有收到任何错误消息,而且数据也没有写入 json 文件。从功能上讲,我想要实现的是创建一个 json 文件,该文件存储执行 Nunit 测试时完成的操作的时间我已尝试实施此处建议的解决方案(Deserializing JSON data to C# using JSON.NET)但它没有解决我的问题public static class ActionTimeHelper{private static readonly string _actionTimeLogFileName = "ActionTimeLog_" + string.Format("{0:yyyy_MM_dd_hhmmss}", DateTime.Now);[ThreadStatic] private static FileStream _fileStream = null;[ThreadStatic] private static StreamWriter _actionStreamWriter = null;[ThreadStatic] private static JsonWriter _jsonWriter = null;[ThreadStatic] private static List<ActionTimeInfo> actionList = new List<ActionTimeInfo>();public static void CreateActionTimeLogFile(string logPath, string testName){    string dir = logPath + testName + @"\";    if (!Directory.Exists(dir))    {        Directory.CreateDirectory(dir);    }    _fileStream = File.Open(dir + _actionTimeLogFileName + ".json", FileMode.CreateNew);    _actionStreamWriter = new StreamWriter(_fileStream);    _jsonWriter = new JsonTextWriter(_actionStreamWriter);    _jsonWriter.Formatting = Formatting.Indented;    JsonSerializer serializer = new JsonSerializer();    serializer.Serialize(_jsonWriter, actionList.ToArray().ToString());    //var jarray = JsonConvert.DeserializeObject<List<ActionTimeInfo>>(actionList.ToArray().ToString());}public static void StartActionTime(string actionName){    actionList.Add(new ActionTimeInfo()    {        ActionName = actionName,        StartTime = DateTime.Now    });}public static void EndActionTime(string actionName){    ActionTimeInfo endAction = actionList.Find(actionInfo => actionInfo.ActionName.Equals(actionName));    endAction.EndTime = DateTime.Now;    endAction.ExecutionTime = endAction.EndTime.Subtract(endAction.StartTime);}}public class ActionTimeInfo{public string ActionName { get; set; }public DateTime StartTime { get; set; }public DateTime EndTime { get; set; }public TimeSpan ExecutionTime { get; set; }}
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

我认为您缺少 _jsonWriter 的刷新和关闭?

也许试试

_jsonWriter.Flush();
_jsonWriter.Close();

在方法的最后

甚至更好,使用 using 包装 _fileStream、_actionStreamWriter 和 _jsonWriter


查看完整回答
反对 回复 2022-12-31
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信