我已经设法在这里创建最小可复制的示例:
internal class Program
{
static void Main(string[] args)
{
Program p = new Program();
Cache sc = new Cache();
sc.Enabled = true;
sc.Path = @"C:\File.txt";
p.WriteToJsonFile("Cache.json", sc);
}
private void WriteToJsonFile<T>(string filePath, T objectToWrite, bool append = false) where T : new()
{
TextWriter writer = null;
try
{
var contentsToWriteToFile = JsonSerializer.Serialize(objectToWrite);
writer = new StreamWriter(filePath, append);
writer.Write(contentsToWriteToFile);
}
finally
{
if (writer != null)
writer.Close();
}
}
internal class Cache
{
public string Path = string.Empty;
public bool Enabled;
}
}
文件Cache.json
被创建,但是它只包含{}
,这意味着这些属性被忽略并且没有被保存。也许WriteToJsonFile
方法有问题,但是在某些情况下它看起来工作。并且它在一个stackoverflow问题中被批准回答。
1条答案
按热度按时间jv4diomz1#
C#中的JSON序列化器倾向于使用 properties,而不是 fields。
使其成为属性: