我有这个代码将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);
}
}
答案 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,以在用户指定不存在的文件名时显示警告。