首页 > 后端开发 > C++ > 如何在 C# 中使用自定义类型映射将嵌套 JSON 反序列化为嵌套字典?

如何在 C# 中使用自定义类型映射将嵌套 JSON 反序列化为嵌套字典?

Patricia Arquette
发布: 2024-12-30 18:13:09
原创
1008 人浏览过

How to Deserialize Nested JSON to a Nested Dictionary with Custom Type Mapping in C#?

将嵌套 JSON 反序列化为嵌套字典使用自定义 JSON 类型映射

将 JSON 对象反序列化为嵌套字典是一项常见任务,但默认的 System.Text.Json 反序列化通常会导致所有嵌套对象都表示为 JsonElement 实例。要实现更具体的类型映射,需要自定义 JSON 转换器。

用于类型映射的自定义 JSON 转换器

以下自定义 JSON 转换器,名为 ObjectAsPrimitiveConverter,提供所需的类型映射:

  • 字符串 ->字符串
  • 数字-> int/double
  • 对象 -> Dictionary

转换器实现

转换器的 Read 和 Write 方法执行自定义映射:

  • 读取:

    • 根据传入的 JSON 令牌的类型解析其类型。
    • 返回特定的.Net 类型(string、int、double、Dictionary 等),或者如果类型不能为则抛出异常
  • 写入:

    • 根据自定义要求,通过写入空 JSON 对象来处理对象类型

转换器的使用

要使用自定义转换器,必须在反序列化期间将其添加到 JsonSerializerOptions 中:

var options = new JsonSerializerOptions
{
    Converters = { new ObjectAsPrimitiveConverter() },
    WriteIndented = true,
};

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

配置选项

转换器提供了几个配置选项:

  • FloatFormat:指定浮点数是否应解析为双精度数或十进制。
  • UnknownNumberFormat: 确定如何处理无法解析为.Net 原始类型。
  • ObjectFormat: 将 JSON 对象的输出类型配置为 Dictionary 或 Dictionary。或 ExpandoObject。

示例 Fiddle

此处提供现场演示:[示例 Fiddle](https://dotnetfiddle.net/tD9pPI)

以上是如何在 C# 中使用自定义类型映射将嵌套 JSON 反序列化为嵌套字典?的详细内容。更多信息请关注PHP中文网其他相关文章!

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