首頁 > 後端開發 > 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

轉換器實作

轉換器的 Readad方法執行自訂映射:

  • 讀取:

    • 根據傳入的 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板