首页 > 后端开发 > C++ > 如何将嵌套 JSON 反序列化为类型化 C# 对象?

如何将嵌套 JSON 反序列化为类型化 C# 对象?

Susan Sarandon
发布: 2024-12-25 12:11:09
原创
443 人浏览过

How Can I Deserialize Nested JSON into Typed C# Objects?

使用类型化 C# 对象进行嵌套 JSON 反序列化

将嵌套 JSON 反序列化为平面字典在 C# 中使用 System.Text.Json 可能会导致大多数属性变成 JsonElement 类型。要基于 JSON 属性类型实现更具体的 C# 类型,需要自定义 JsonConverter。

ObjectAsPrimitiveConverter

以下代码提供了一个名为 ObjectAsPrimitiveConverter 的自定义 JsonConverter:

public class ObjectAsPrimitiveConverter : JsonConverter<object>
{
    // ... (converter implementation)
}
登录后复制

转换器配置

要配置转换器,请指定所需的 FloatFormat(双精度或十进制)、UnknownNumberFormat(错误或 JsonElement)和 ObjectFormat(ExpandoObject 或 Dictionary):

var options = new JsonSerializerOptions
{
    Converters = { new ObjectAsPrimitiveConverter(...) },
    WriteIndented = true,
};
登录后复制

反序列化为对象

要将嵌套 JSON 反序列化为对象(如果使用 ExpandoObject,则为动态),请使用:

dynamic d = JsonSerializer.Deserialize<dynamic>(json, options);
登录后复制

自定义

可以自定义转换器以支持不同的数字类型和对象格式。此外,它还可以扩展以更优雅地处理不支持的 JSON 数字。

结论

通过实现自定义 JsonConverter,您可以实现嵌套 JSON 对象的特定于类型的反序列化转换为分层数据结构,每个属性都有适当的 C# 类型。

以上是如何将嵌套 JSON 反序列化为类型化 C# 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板