【发布时间】:2020-01-17 16:38:20
【问题描述】:
鉴于这个类,我正在尝试序列化,但它不起作用。
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
【问题讨论】:
-
这些是字段,而不是属性。将它们更改为属性。
-
这里有一些问题。首先,您的班级
Service格式不正确。你需要 getter 和 setter。但第二,这条线:string x = JsonSerializer.Serialize<Service>(c);对我来说没有意义。序列化时不需要类型。换句话说,你不需要<Service> -
@CaseyCrookston Serialize 可以采用泛型。您假设这是 JSON.Net 或 .Net 序列化程序。例如,Kentico 有一个serialize method that does take a generic type parameter。
System.Text.Json序列化程序具有通用重载,但它们采用此处未显示的其他参数。也就是说,你是对的,它不需要指定类型。 -
@Amy,好的,很高兴知道!在发表此评论之前,我查看了
JsonSerializer.Serialize的定义,但没有看到使用类型的选项。 -
@CaseyCrookston 也许模板参数是可选的,但是 MS 提供了那个版本并且为了与 Deserialize 函数对称,为什么不呢?
标签: c# json .net-core system.text.json