首頁 > 後端開發 > C++ > 如何將 JSON 屬性序列化為值而不是物件?

如何將 JSON 屬性序列化為值而不是物件?

DDD
發布: 2025-01-03 09:24:43
原創
872 人瀏覽過

How to Serialize JSON Properties as Values Instead of Objects?

將JSON 屬性序列化為值

在程式碼中使用JSON 表示形式時,您可能會遇到想要將屬性序列化為值的情況值而不是物件。這是為了實現更簡潔和所需的 JSON 格式。

讓我們考慮以下涉及 Car 和 StringId 類別的範例:

class Car
{
    public StringId Id { get; set; }
    public string Name { get; set; }
}

class StringId
{
    public string Value { get; set; }
}

// Desired representation
{ "Id": "someId", "Name": "Ford" }

// Default (undesired) representation
{ "Id" : { "Value": "someId" }, "Name": "Ford" }
登入後複製

所需的 JSON 表示消除了 Id 和 StringId 的巢狀物件直接顯示其值。為了實現這一點,我們可以採用兩種方法:

使用 TypeConverter

透過為 StringId 實作 TypeConverter,JSON.NET將自動使用它將屬性轉換為字串:

[TypeConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : TypeConverter
{
    // Implementation omitted for brevity...
}
登入後複製

使用JsonConverter

此方法要求您在StringId 類別中新增特定的JSON.NET 屬性:

[JsonConverter(typeof(StringIdConverter))]
class StringId
{
    public string Value { get; set; }
}

class StringIdConverter : JsonConverter
{
    // Implementation omitted for brevity...
}
登入後複製

在這兩種情況下,轉換器都會直接讀取和寫入值,從而導致所需的JSON 表示形式:

{ "Id": "someId", "Name": "Ford" }
登入後複製

以上是如何將 JSON 屬性序列化為值而不是物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板