我正在嘗試使用 C# 和 JSON.NET 將數(shù)據(jù)寫入 json 文件,參考此處建議的已接受答案(How to write a JSON file in C#?)。當(dāng)我運行下面的代碼時,我沒有收到任何錯誤消息,而且數(shù)據(jù)也沒有寫入 json 文件。從功能上講,我想要實現(xiàn)的是創(chuàng)建一個 json 文件,該文件存儲執(zhí)行 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條經(jīng)驗 獲得超4個贊
我認為您缺少 _jsonWriter 的刷新和關(guān)閉?
也許試試
_jsonWriter.Flush(); _jsonWriter.Close();
在方法的最后
甚至更好,使用 using 包裝 _fileStream、_actionStreamWriter 和 _jsonWriter
- 1 回答
- 0 關(guān)注
- 129 瀏覽
添加回答
舉報
0/150
提交
取消