Luk*_*ien 7 c# blazor .net-5 system.text.json
我只是.Net 5。
我正在使用 Blazor 创建一个 QC 应用程序,并使用它System.Text.Json来序列化一个包装对象,List<T>该对象的属性是发布到服务器并保存在数据库中的 QC 问题的答案。
但是 List 中的每个项目都没有被序列化,因此发布的请求有一个空 List 。
因此,在我的代码中,我只是对对象进行非常简单的序列化:
string content = JsonSerializer.Serialize(obj);
Run Code Online (Sandbox Code Playgroud)
如果我进行调试,我可以看到Answers数组具有正确的长度,但每个项目都是空的:
'{"Answers":[{},{},{},{}],...}'
但是,C# 对象肯定具有具有正确输入值的属性。
这T是一个答案对象,它只是一个没有注释的 POCO:
public class ReturnedQCResult
{
public string Question;
public int QuestionEntryTypeID;
public char QuestionType;
public short QuestionSequence;
public string Text;
public decimal? Number;
public bool? YesNo;
public DateTime? DateEntry;
public TimeSpan? TimeEntry;
public long QuestionID;
}
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会发生这种情况或者是否有一个设置可以打开?
非常感谢。
Dav*_*d L 11
虽然以前版本的 System.Text.Json 只能序列化公共属性,但从 .NET 5 开始,您现在可以显式告诉 System.Text.Json 在序列化中包含字段: https: //learn.microsoft.com/en-us /dotnet/standard/serialization/system-text-json-how-to?pivots=dotnet-5-0#include-fields
var options = new JsonSerializerOptions()
{
IncludeFields = true,
};
string content = JsonSerializer.Serialize(obj, options);
Run Code Online (Sandbox Code Playgroud)