将 false 反序列化为 null (System.Text.Json)

Pet*_*ete 5 c# json .net-core system.text.json

我正在使用一个 API,它出于某种原因在应该使用 null 的地方使用了 false。我不知道如何正确反序列化它。我试图创建一个自定义 JsonConverter 来解决这个问题,但无法这样做。我想避免使用动态类型。我应该如何反序列化这个?

这是默认响应。

{
    "products": [
        {
            "id": 123456789,
            "supplier": {
                "id": 123456,
                "title": "abc"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我正在反序列化如下。

public class Container
{
    public Product[] products { get; set; }
}

public class Product
{
    public ulong id { get; set; }
    public Supplier supplier { get; set; }
}

public class Supplier
{
    public ulong id { get; set; }
    public string title { get; set; }
}

JsonSerializer.Deserialize<Container>(json)
Run Code Online (Sandbox Code Playgroud)

这是当产品没有供应商时的反应。

{
    "products": [
        {
            "id": 123456789,
            "supplier": false
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ans -3

假设您正在使用 Json.Net

var settings = new JsonSerializerSettings();
        settings.NullValueHandling = NullValueHandling.Include;
        settings.DefaultValueHandling = DefaultValueHandling.Include;


JsonSerializer.Deserialize<Container>(json,settings)
Run Code Online (Sandbox Code Playgroud)

或尝试

var serializeOptions = new JsonSerializerOptions
{
    IgnoreNullValues =false
};

 JsonSerializer.Deserialize<Container>(json,serializeOptions)
Run Code Online (Sandbox Code Playgroud)