c# - 如何使用打开文件对话框打开 json 文件

标签 c# json.net openfiledialog

我有这段代码可以将 Person 对象保存为 JSON 文件。

if (saveWork.ShowDialog() == DialogResult.OK)
        {
            string output = JsonConvert.SerializeObject(MyPerson);
            try
            {
                string name = saveWork.FileName;
                using (System.IO.StreamWriter sw = new StreamWriter(name))
                    sw.WriteLine(output);
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

现在我正在处理打开文件对话框的代码,但我被卡住了,我尝试的任何事情似乎都不起作用。这是我现在的代码,他在“file.json”上给出了一个错误。我知道为什么,但我不知道如何获取它的文件名。

if (openWork.ShowDialog() == DialogResult.OK)
        {
            DialogResult result = openWork.ShowDialog();
            //Person file = JsonConvert.DeserializeObject(result);

            using (StreamReader r = new StreamReader("file.json"))
            {
                string json = r.ReadToEnd();
                Person items = JsonConvert.DeserializeObject<Person>(json);
            }
        }

最佳答案

您应该使用 OpenFileDialog 中的属性 FileName 来检索文件的名称

    openWork.CheckFileExists = true;
    if (openWork.ShowDialog() == DialogResult.OK)
    {
        // Check if you really have a file name 
        if(openWork.FileName.Trim() != string.Empty)
        {
            using (StreamReader r = new StreamReader(openWork.FileName))
            {
                string json = r.ReadToEnd();
                Person items = JsonConvert.DeserializeObject<Person>(json);
            }
        }
    }

我还为 true 添加了一个 CheckFileExists 属性,以便在用户指定不存在的文件名时显示警告。

关于c# - 如何使用打开文件对话框打开 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20317341/

相关文章:

javascript - C# JSON 字符串到 JavaScript 数组

c# - OpenFileDialog 和 UnauthorizedAccessException

c# - 组合框宽度取决于最长的项目

c# - 仅当包含至少 1 个指定字符时,正则表达式匹配任何 2 个字符组合

elasticsearch - 在NEST Elasticsearch 查询中,file.filename返回null

c# - 使用 JSON.net 反序列化 JSON 流

Vba代码在同一工作簿的不同工作表中打开多个文件

Netbeans 打开文件的快捷方式

c# - 如何在 PhantomJS + Selenium 中隐藏控制台?

c# - 在 C# 中获取两个日期之间的月份差异的最简单方法是什么?