2017-10-18 52 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

在包含此类的对象的类中,可以添加内部属性,以返回要序列化的成员的值。不是最优雅的解决方案,但它的工作原理。

相关问题