【发布时间】:2020-06-23 08:11:39
【问题描述】:
我正在使用一个 API,由于某种原因,它在应该使用 null 的地方使用了 false。我不知道如何正确反序列化它。我试图创建一个自定义 JsonConverter 来解决这个问题,但无法这样做。我想避免使用动态类型。我应该如何反序列化这个?
这是默认响应。
{
"products": [
{
"id": 123456789,
"supplier": {
"id": 123456,
"title": "abc"
}
}
]
}
我正在反序列化如下。
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)
这是当产品没有供应商时的响应。
{
"products": [
{
"id": 123456789,
"supplier": false
}
]
}
【问题讨论】:
-
为了做到这一点,这里的问题是API端点返回false,什么时候应该返回null,或者你不能反序列化序列化的对象?
-
@vasilisdmr 问题是我无法反序列化序列化的对象。很遗憾,我无法更改 API 的行为。
-
查看以下来自 Microsoft 文档的文章,其中说“不支持反序列化到没有无参数构造函数的引用类型”docs.microsoft.com/en-us/dotnet/standard/serialization/…
-
@Pete,你能用我下面的建议解决你的问题吗?stackoverflow.com/a/60642484/12509023
标签: c# json .net-core system.text.json