将在UserControl中输入的数据序列化为JSON

时间:2018-06-21 06:50:26

标签: c# .net json.net windows-forms-designer

我有一个UserControl,我在运行时从同一项目的主表单类创建的。

我需要发送我正在JSON文件中动态创建的UserControl的所有信息(位置,名称,标签,文本...)。我正在使用JSON.NET库。

我正在执行以下操作,但不起作用:

UserControl1 UC = new UserControl1();
string outputJSON = JsonConvert.SerializeObject(UC);
File.WriteAllText("mifile.json", outputJSON);

1 个答案:

答案 0 :(得分:0)

用户控件将包含一些包含您要公开的值的控件。

您可以通过创建要序列化的数据传输对象来执行此操作,然后使用控件中的数据填充此属性。

因此,在此示例中,为包含Person数据的控件创建一个DTO:

public class PersonDto
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    // ...
}

并通过方法或属性将其从用户控件中公开:

public PersonDto Data
{
    get
    {
        return new PersonDto
        {
            FirstName = this.FirstNameTextBox.Text,
            LastName = this.LastNameTextBox.Text,
            // ...
        }
    }
}

然后您可以序列化该属性:

UserControl1 UC = new UserControl1();
// ...
string outputJSON = JsonConvert.SerializeObject(UC.Data);