首页 > 后端开发 > C++ > 如何用ID作为键从JSON创建强烈键入的C#对象?

如何用ID作为键从JSON创建强烈键入的C#对象?

DDD
发布: 2025-01-30 00:24:11
原创
951 人浏览过

How to Create Strongly Typed C# Objects from JSON with IDs as Keys?

使用 ID 作为名称从 JSON 创建强类型 C# 对象

当遇到像 JSON 对象这样的 API 响应时,其中 ID 数字用作数据的标识符,创建强类型 C# 对象来处理它们可能会很困难。让我们解决这个问题。

考虑以下 JSON 响应:

<code class="language-json">{
    "5234592":{
        "pollsAndSurveys":{
            "questionsAsked":1,
            ...
            "pollCount":2},
        "attendance":{
            "averageAttendanceTimeSeconds":253,
            ...
            "percentageAttendance":100}
        },
    "5235291":{
        "pollsAndSurveys":{
            "questionsAsked":2,
            ...
            "pollCount":0},
        "attendance":{
            "averageAttendanceTimeSeconds":83,
            ...
            "percentageAttendance":100}
        }
}</code>
登录后复制

为了创建强类型对象,我们定义了:

<code class="language-csharp">public class AttendanceStatistics
{
    [JsonProperty(PropertyName = "registrantCount")]
    public int RegistrantCount { get; set; }

    // 其他属性
}

public class PollsAndSurveysStatistics
{
    [JsonProperty(PropertyName = "pollCount")]
    public int PollCount { get; set; }

    // 其他属性
}

public class SessionPerformanceStats
{
    [JsonProperty(PropertyName = "attendance")]
    public AttendanceStatistics Attendance { get; set; }

    [JsonProperty(PropertyName = "pollsAndSurveys")]
    public PollsAndSurveysStatistics PollsAndSurveys { get; set; }
}

public class WebinarPerformanceStats
{
    public List<SessionPerformanceStats> Stats { get; set; }
}</code>
登录后复制

但是,我们面临一个问题:JSON 中的根对象与我们预期的 WebinarPerformanceStats 类型不匹配。

为了解决这个问题,我们可以使用字典作为根对象:

<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<string, SessionPerformanceStats>>(theJsonResponse);</code>
登录后复制

JSON.NET 有效地处理字典的序列化和反序列化,将属性名称转换为字典键。在这种情况下,ID 数字将被反序列化为字典键。如果您愿意,可以将它们声明为长整数:

<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<long, SessionPerformanceStats>>(theJsonResponse);</code>
登录后复制

通过这种方法,您现在可以将 JSON 响应反序列化为强类型的 Dictionary<string, SessionPerformanceStats>Dictionary<long, SessionPerformanceStats>,其中 ID 数字用作访问单个会话统计信息的键。

以上是如何用ID作为键从JSON创建强烈键入的C#对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

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