將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中文網其他相關文章!