ホームページ >バックエンド開発 >C++ >KeysとしてIDを使用して、JSONから強く型付けられたC#オブジェクトを作成する方法は?

KeysとしてIDを使用して、JSONから強く型付けられたC#オブジェクトを作成する方法は?

DDD
DDDオリジナル
2025-01-30 00:24:111027ブラウズ

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

IDを名前として使用して、JSON JSONオブジェクトのようなAPI応答に遭遇すると、ID番号はデータの識別子として使用され、それらに対処するために強力なタイプC#オブジェクトを作成することは困難な場合があります。この問題を解決しましょう。 次のJSON応答を検討してください:

強力なタイプオブジェクトを作成するために、次のことを定義します。

ただし、質問に直面しています。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>
この問題を解決するために、辞書をルートオブジェクトとして使用できます。

json.net辞書のシリアル化とデバイスを効果的に処理して、属性名を辞書キーに変換します。この場合、ID番号は辞書キーに実行されます。あなたが喜んでいるなら、あなたはそれらを長い整数として宣言することができます:
<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>

WebinarPerformanceStatsこの方法により、JSON応答を後方への

または

に変換できるようになりました。ここで、ID番号は単一のセッション統計にアクセスするためのキーとして使用されます。

以上がKeysとしてIDを使用して、JSONから強く型付けられたC#オブジェクトを作成する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。