我的目的是通过从txt中读取来将bool值设置在剩余值的位置。
这是我的问题,简单而又一步一步地
我通过点击设置按钮将值设置为“ true”
在txt文件中,JSON对象已成功设置为true
我关闭并重新运行程序
我希望当前的bool标志在上一次运行时为“ true”
但是它们仍然是错误的,我出现了“ 反序列化”的问题 Button2_Click_1只是向我显示标志的当前值。 另一点是,在txt文件中,标志仍然为true,这似乎还可以。
我更改了反序列化和序列化的顺序,但没有任何改变。
[Serializable]
class Class1
{
public bool flag { get; set; }
public bool flag2 { get; set; }
public Class1()
{
flag = false;
flag2 = false;
}
}
[Serializable]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Class1 c1 = new Class1();
private void Button1_Click(object sender, EventArgs e)
{
c1.flag = true;
c1.flag2 = true;
//deserialize
string json2 = File.ReadAllText("path.txt");
Class1 f2 = JsonConvert.DeserializeObject<Class1>(json2);
//serialize
string json = JsonConvert.SerializeObject(c1);
File.WriteAllText("path.txt", json);
Console.WriteLine(json);
}
private void Button2_Click_1(object sender, EventArgs e)
{
Console.WriteLine("Current Status of Flag1: "+c1.flag);
Console.WriteLine("Current Status of Flag2: " + c1.flag2);
}
答案 0 :(得分:2)
如果在应用程序启动时没有先单击Button1而单击Button2,则默认情况下c1将为false,因为布尔值的默认值为false。如果您希望在单击Button2时加载json,请在Console.WriteLine上方添加以下代码:
formatDate = (date_arr) => {
return date_arr.map( dt => {
// create an date object and convert to an iso-string (yyyy-mm-dd)
var iso = new Date(dt).toISOString().substr(0,10);
// rearrange the values as needed (mm-dd-yyyy)
iso = `${iso.substr(5)}-${iso.substr(0,4)}`;
// replace delimiter '-' with '/'
return iso.replace(/-/g, '/');}
);
};
// sample call
formatDate(['2019-05-03', new Date()]);
// ["05/03/2019", "07/18/2019"]
使其变为
c1 = JsonConvert.DeserializeObject<Class1>(File.ReadAllText("path.txt"));
这应该可以解决您的问题