Lil*_*lue 7 c# json .net-core system.text.json
我从外部 API 获取一些 JSON 数据。我有 POCO 对象,数据被反序列化到该对象。我使用 System.Text.Json.JsonSerializer 进行反序列化。最近,我意识到我收到的 JSON 的结构发生了变化,并且我只是在检查其他内容时偶然才知道它。我的问题是,是否有可能以某种方式捕获未成功映射到任何 POCO 字段的 json 数据?
为了更准确地回答我的问题,这里有一个 POCO 示例:
public class Car
{
public string Name { get; set; }
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我之前收到的 JSON:
{"Name" : "PinkCar", "Age": 3}
Run Code Online (Sandbox Code Playgroud)
我现在收到的 JSON:
{"Name" : "PinkCar", "Age": 3, "RogueField": "Loser"}
Run Code Online (Sandbox Code Playgroud)
我希望至少能够以某种方式获得这个新的“RogueField”的信息,它与任何 POCO 属性都不匹配,而不会破坏反序列化的过程。
额外的属性可以与您的对象一起保存在字典中。您可以操作此目录,再次序列化对象时将使用它。
来自https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to#handle-overflow-json:创建类型的属性Dictionary<string, object>
,可以具有任何名称(大多数情况下,它被命名为 ExtensionData 但可以是任何东西),并用[JsonExtensionData]
属性装饰它,例如:
public class Car
{
public string Name { get; set; }
public int Age { get; set; }
[JsonExtensionData]
public Dictionary<string, object> ExtensionData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
651 次 |
最近记录: |