将 dataGridView 序列化为 JSON

Serialize dataGridView to JSON

我的 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 表单控件。

我建议创建一个 class 代表 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;
    }
}

以后可以序列化

private void button1_Click(object sender, EventArgs e)
{
    string output = JsonConvert.SerializeObject(_data);
    System.IO.File.WriteAllText("json.json", output);
}

始终序列化数据本身而不是视图。

在这种情况下,您必须序列化 DataGridViewDataSource 属性。