C# 将dataGridView序列化为JSON
我的Windows窗体应用程序上有一个datagridview,它接受用户的输入。我想使用JSON存储此输入,并尝试将datagridview中的输入序列化为JSON 到目前为止,我已经:C# 将dataGridView序列化为JSON,c#,json,serialization,datagridview,jsonserializer,C#,Json,Serialization,Datagridview,Jsonserializer,我的Windows窗体应用程序上有一个datagridview,它接受用户的输入。我想使用JSON存储此输入,并尝试将datagridview中的输入序列化为JSON 到目前为止,我已经: private void button2_Click(object sender, EventArgs e) { string output = JsonConvert.SerializeObject(this.dataGridView1); Syst
private void button2_Click(object sender, EventArgs e)
{
string output = JsonConvert.SerializeObject(this.dataGridView1);
System.IO.File.WriteAllText("json.json", output);
}
然而,尝试序列化datagridview时似乎出现了一些问题(之前我认为任何对象都可以转换?)。这是否意味着我必须先将datagridview转换为数组、列表或类似的内容,然后才能序列化它?您希望只转换数据,而不是windows窗体控件 我建议在
DataGridView
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
然后创建集合并将其分配给DataGridView.DataSource
public partial class YourForm : Form
{
private readonly BindingList<Person> _data;
public YourForm()
{
InitializeComponent();
// Create empty collection/datasource
_data = new BindingList<Person>();
// This line will generate columns automatically if
// DataGridView.AutoGenerateColumns = true (by default it is true)
this.yourDataGridView.DataSource = _data;
}
}
始终序列化数据本身,而不是视图
在这种情况下,您必须序列化转换windows窗体控件的
DataGridView
的DataSource
属性,但您需要转换此控件显示的数据。对于答案,您需要提供如何在DataGridView
@Fabio中插入数据的信息正如我所说,数据是由用户插入的,DataGridView不会从其他地方获取数据。datagridview是插入数据的方法。始终序列化数据,而不是视图。从阅读文档中可以看出,DataGridView.DataSource是您要序列化的对象。@Skynet似乎已经完成了这项任务,请随意将其添加为解决方案,我会将其标记为已解决。
private void button1_Click(object sender, EventArgs e)
{
string output = JsonConvert.SerializeObject(_data);
System.IO.File.WriteAllText("json.json", output);
}