首页 > 后端开发 > C++ > 如何在 C# 中将嵌套 JSON 反序列化为嵌套字典?

如何在 C# 中将嵌套 JSON 反序列化为嵌套字典?

Susan Sarandon
发布: 2024-12-29 20:10:20
原创
693 人浏览过

How to Deserialize Nested JSON to a Nested Dictionary in C#?

将嵌套 JSON 反序列化为嵌套字典在 C

使用嵌套 JSON 对象时,您可能希望将它们反序列化为 Dictionary其中每个键值对对应于 JSON 对象中的属性值对。但是,默认情况下,System.Text.Json 将所有对象反序列化为 JsonElement 对象,这可能无法提供所需的 C# 类型。

自定义 JsonConverter

要实现正确的 C# 类型,您需要创建自定义 JsonConverter。以下转换器将处理所有 JSON 值类型并将它们转换为相应的 C# 类型:

public class ObjectAsPrimitiveConverter : JsonConverter<object>
{
    ...

    public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        switch (reader.TokenType)
        {
            // Handle null, boolean, string, and number types.

            case JsonTokenType.StartArray:
                // Handle arrays.

            case JsonTokenType.StartObject:
                // Handle objects.

            default:
                throw new JsonException("Unknown token");
        }
    }
}
登录后复制

使用转换器

要使用自定义转换器,请在反序列化选项中指定它:

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

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

注释

  • JSON 可以表示任意精度的数字,并且大小,而 .Net 原始数字类型有限制。您可以配置是否将不支持的数字作为 JsonElements 返回或引发异常。
  • 您可以自定义转换器以返回双精度或十进制浮点数和字典。或 ExpandoObject,根据您的喜好获取 JSON 对象。

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

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