为什么 JsonSerializer 给空?

Why does JsonSerializer give empty?

鉴于此 class,我正在尝试序列化但它不起作用。

using System.Text.Json;
public class Service
{
    public Service() { }
    public string service;
    public string description;
}

        Service c = new Service();
        c.description = "desc";
        c.service = "serv";
        string x = JsonSerializer.Serialize<Service>(c);

调试我看到 x == "{}"。我错过了什么?

C#.net 核心 3.1

您缺少 setter 和 getter

public class Service
{
    public Service() { }
    public string service {get; set;}
    public string description {get; set;}
}
public class Service
{
    public Service() { }
    public string SomethingElse { get; set; }
    public string Description { get; set; }
}

关于你的一些事情 class。

1) 您的属性需要 getter 和 setter(正如其他人指出的那样)

2) C# 最佳实践是将 class 属性的首字母大写。

3) 您真的不想使用与 class 同名的 属性。

Service c = new Service
{
    Description = "desc",
    SomethingElse = "serv"
};
string x = JsonConvert.SerializeObject(c);

此代码为您提供 x:

{"SomethingElse":"serv","Description":"desc"}

请注意,当您创建一个 class 的新实例,然后立即填充它并为属性赋值时,最好使用 Object Initializer 方法。

所以不是这个:

Service c = new Service();
c.description = "desc";
c.service = "serv";

最好这样做:

Service c = new Service
{
    Description = "desc",
    SomethingElse = "serv"
};

这是一个正确的例子:

using Newtonsoft.Json;
using System;
using Microsoft;

public class Program
{
    public static void Main()
    {
        Service c = new Service();
        c.description = "desc";
        c.service = "serv";
        string json = JsonConvert.SerializeObject(c, Formatting.Indented);
        Console.WriteLine(json);

    }

    public class Service
    {
        public Service() { }
        public string service;
        public string description;
    }


}