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

时间:2013-12-01 21:14:01

标签: 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);
            }
        }

1 个答案:

答案 0 :(得分:4)

您应该使用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);
            }
        }
    }

此外,我已将CheckFileExists属性添加到true,以在用户指定不存在的文件名时显示警告。