[英]Serializing object to JSON - Get attribute Name from a field of serializing class
[英]How to modify the name of a class when serializing it to JSON
我有一個實體類,如下所示。 我正在使用Json.Net將其序列化為JSON。 現在,類中有幾個字段/屬性需要使用與實際屬性不同的名稱進行序列化,並且可以使用[JsonProperty]
屬性輕松實現,如下面的代碼所示。 但是,如果我需要更改以[JsonObject]
屬性標記的主體實體本身的名稱,該怎么辦? (在這里,我談論的是從EntityBase<int>
派生的UserDashboards
類。)我嘗試添加一些命名參數,例如title,id等,但它們沒有幫助。
[JsonObject]
public class UserDashboards : EntityBase<int>
{
public int UserID { get; set; }
public int DashboardID { get; set; }
public int DashboardSequence { get; set; }
public string DashboardTitle { get; set; }
public int PermissionLevelID { get; set; }
[JsonProperty("IsHome")]
public Nullable<bool> IsHomeDashboard { get; set; }
[JsonProperty("IsShared")]
public Nullable<bool> IsSharedDashboard { get; set; }
}
如果您的對象位於JSON的根級別,則無法為其分配名稱。 根據規范,JSON中的對象實際上沒有名稱(請參閱JSON.org )。 對象屬性具有名稱。 因此,如果您實際上想在JSON中命名對象,則需要將其包裝在另一個對象中。 然后,您可以在包裝對象中為該屬性分配名稱。 像這樣:
class Wrapper
{
[JsonProperty("UserData")]
public UserDashboards UserDashboards { get; set; }
}
如果隨后對包裝對象進行序列化,則最終將得到JSON,如下所示:
{
"UserData" :
{
"UserID" : 42,
"DashboardID" : 26,
"DashboardSequence" : 1,
"DashboardTitle" : "Foo",
"PermissionLevelID" : 99,
"IsHome" : true,
"IsShared" : false
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.