2017-10-18 54 views
0

使用Json.NET有可能序列化對象的字段而不是對象本身?Json.NET序列化沒有父對象的屬性

在JMS串行器(PHP)中,我可以使用@Inline註釋。

public class ApiResponseData 
{ 
    public User User { get; set; } 
} 

public class User 
{ 
    public string Username { get; set; } 
    public string Firstname { get; set; } 
    public string Lastname { get; set; } 
} 

如果我序列ApiResponseData我希望得到的只是用戶名,名字和姓氏,而不是用戶屬性。

實際:{ "user": { "username": "username", "firstname": "firstname", "lastname": "lastname" } }
期望:{ "username": "username", "firstname": "firstname", "lastname": "lastname" }

+0

使用'JsonConvert.SerializeObject(apiResponseData.User)'的問題是什麼? – Alex

+0

@Alex我遺漏了一些上下文,但ApiResponseData實現了ApiResponse,並且應該有一個User作爲它的主體(但沒有「user」屬性序列化「因爲我使用User作爲實體類)。其他ApiResponse類可能有其他類/ properties。 – StockBreak

+0

你可以用一個自定義的json轉換器來覆蓋。像這樣https://stackoverflow.com/questions/40862660/how-to-inline-a-property-in-resulting-json-with-json-net –

回答

0

你可以嘗試序列ApiResponseData.User,而不是串行化ApiResponseData本身。這樣它將只序列化 ApiResponseData.User的值。如:

Newtonsoft.Json.JsonConvert.SerializeObject(ApiResponseData.User); 
+0

是的,這是我現在正在做的事情,它不是一個非常乾淨的解決方案,JMS的@Inline註釋非常有用,你能否確認Json.NET中沒有這樣的屬性? – StockBreak

0

在包含此類的對象的類中,可以添加內部屬性,以返回要序列化的成員的值。不是最優雅的解決方案,但它的工作原理。

相關問題