.net JSON序列化程序返回空文件

v2g6jxz6  于 2023-01-27  发布在  .NET
关注(0)|答案(1)|浏览(145)

我已经设法在这里创建最小可复制的示例:

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问题中被批准回答。

jv4diomz

jv4diomz1#

C#中的JSON序列化器倾向于使用 properties,而不是 fields

internal class Cache
{
    public string Path = string.Empty;
    public bool Enabled;
}

使其成为属性:

internal class Cache
{
    public string Path { get; set; } = string.Empty;
    public bool Enabled { get; set; }
}

相关问题