小编Dev*_*rem的帖子

使用 System.Text.Json 序列化继承 Dictionary 的自定义类型不会序列化其他属性

我有以下类型:

public class Product : Dictionary<string, object>
{
    [JsonInclude]
    public string ProductId { get; set; }

    public Product(string productId) : base()
    {
        ProductId = productId;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用 System.Text.Json 进行序列化时,它不包含属性(即ProductId)。添加或删除[JsonInclude]似乎没有任何效果。

测试用例:

[Fact]
public void SimpleTest()
{
    var p = new Product("ABC123");
    p["foo"] = "bar";
    var json = JsonSerializer.Serialize(p);
    Assert.Contains("productId", json, StringComparison.OrdinalIgnoreCase);
}
Run Code Online (Sandbox Code Playgroud)

并收到输出:

{"foo":"bar"}
Run Code Online (Sandbox Code Playgroud)

如何使其在序列化期间包含我的类型上的自定义属性?(注意:不关心反序列化)。

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

5
推荐指数
1
解决办法
1918
查看次数

标签 统计

.net-5 ×1

c# ×1

json ×1

serialization ×1

system.text.json ×1