相关疑难解决方法(0)

如何在System.Text.Json.JsonSerializer中使用类字段?

我最近将解决方案升级为全部.NET Core 3,并且我有一个类,要求类变量为字段。这是一个问题,因为新版本System.Text.Json.JsonSerializer不支持序列化或反序列化字段,而仅处理属性。

有什么方法可以确保下面的示例中的两个最终类具有相同的确切值?

using System.Text.Json;

public class Car
{
    public int Year { get; set; } // does serialize correctly
    public string Model; // doesn't serialize correctly
}

static void Problem() {
    Car car = new Car()
    {
        Model = "Fit",
        Year = 2008,
    };
    string json = JsonSerializer.Serialize(car); // {"Year":2008}
    Car carDeserialized = JsonSerializer.Deserialize<Car>(json);

    Console.WriteLine(carDeserialized.Model); // null!
}
Run Code Online (Sandbox Code Playgroud)

c# json.net .net-core-3.0 system.text.json

7
推荐指数
2
解决办法
243
查看次数

System.Text.Json 未序列化 List&lt;T&gt;

我只是.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)

有谁知道为什么会发生这种情况或者是否有一个设置可以打开?

非常感谢。

c# blazor .net-5 system.text.json

7
推荐指数
1
解决办法
5734
查看次数

标签 统计

c# ×2

system.text.json ×2

.net-5 ×1

.net-core-3.0 ×1

blazor ×1

json.net ×1