Json.NET序列化没有父对象的属性
问题描述:
使用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" }
答
你可以尝试序列ApiResponseData.User
,而不是串行化ApiResponseData
本身。这样它将只序列化 ApiResponseData.User
的值。如:
Newtonsoft.Json.JsonConvert.SerializeObject(ApiResponseData.User);
+0
是的,这是我现在正在做的事情,它不是一个非常干净的解决方案,JMS的@Inline注释非常有用,你能否确认Json.NET中没有这样的属性? – StockBreak
答
在包含此类的对象的类中,可以添加内部属性,以返回要序列化的成员的值。不是最优雅的解决方案,但它的工作原理。
使用'JsonConvert.SerializeObject(apiResponseData.User)'的问题是什么? – Alex
@Alex我遗漏了一些上下文,但ApiResponseData实现了ApiResponse,并且应该有一个User作为它的主体(但没有“user”属性序列化“因为我使用User作为实体类)。其他ApiResponse类可能有其他类/ properties。 – StockBreak
你可以用一个自定义的json转换器来覆盖。像这样https://stackoverflow.com/questions/40862660/how-to-inline-a-property-in-resulting-json-with-json-net –