C# 将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

我的Windows窗体应用程序上有一个datagridview,它接受用户的输入。我想使用JSON存储此输入,并尝试将datagridview中的输入序列化为JSON

到目前为止,我已经:

        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);
}