从文本框中获取用户数据,并将其写入特定的json名称

本文关键字:名称 json 文本 获取 用户 数据 用户数 | 更新日期: 2023-09-27 18:00:23

我能够成功地从文件中读取值,只是不知道如何写入特定的名称。

我开始尝试的是

public void writeCharacter()
{
    Form1 f1 = new Form1();
    string homepath = Environment.GetEnvironmentVariable("homepath");
    try
    {
        using (FileStream fs = File.Open(homepath + @"'Documents'DnD5e'charactersheet.json", FileMode.OpenOrCreate))
        using (StreamWriter sw = new StreamWriter(fs))
        using (JsonWriter jw = new JsonTextWriter(sw))
        {
            jw.Formatting = Formatting.Indented;
            JsonSerializer jserialize = new JsonSerializer();
            foreach (Control ctrl in f1.Controls)
            {
                if (ctrl.Tag == "CHANGED")
                {
                    jserialize.Serialize(jw, ctrl.Text);
                }
            }
        }
    }
    catch (Exception e)
    {
        
        MessageBox.Show(e.Source + "'n'n" + e.Message);
    }
}

唯一的问题是,我不知道序列化程序在哪里写入,也不知道如何指定要写入的名称。

我想从文本框中获取输入(当文本更改时,它们会被标记为"changed"),并根据数据来自哪个文本框,我希望将其写入特定的名称。非常感谢您的帮助!!

我的代码都托管在git 上

从文本框中获取用户数据,并将其写入特定的json名称

您已经有了JsonWriter,不需要分配JsonSerializerJsonWriter是用于写出JSON:的较低级别机制

using (FileStream fs = File.Open(homepath + @"'Documents'DnD5e'charactersheet.json",
                                 FileMode.OpenOrCreate))
using (StreamWriter sw = new StreamWriter(fs))
using (JsonWriter jw = new JsonTextWriter(sw))
{
    jw.Formatting = Formatting.Indented;
    foreach (Control ctrl in f1.Controls)
    {
        if (ctrl.Tag == "CHANGED")
        {
            jw.WritePropertyName(ctrl.Name);
            jw.WriteValue(ctrl.Text);
        }
    }
}

JsonWriter将通过您的StreamWriter写入文件。