【发布时间】:2017-06-29 01:36:56
【问题描述】:
我正在使用我现有的模型类和模型服务编写一个 web api,这些模型类和模型服务也被许多其他应用程序使用,这些应用程序需要模型在序列化中完全公开。我可以为 web api 使用相同的模型对象并且只公开几个字段吗?
我曾尝试使用 JsonContractResolver,但它无法序列化嵌套类中的子属性。
/*Model class*/
public class A
{
public int A1 { get; set; }
public DateTime A2 { get; set; }
public List<B> A3 { get; set; }
}
public class B
{
public string B1 { get; set; }
public string B2 { get; set; }
public string B3 { get; set; }
}
预期输出: 当一个 web 应用方法获取类 A 的成员时,它应该返回以下 json:
{"A1":1,"A2":"2017-02-10","A3":[{"B1":"test1","B2":"test2","B3":"test3"}]}
当 web api 获取到类 A 的成员时,它应该返回:
{"A1":1,"A3":[{"B1":"test1"}]}
请建议最好的方法。
【问题讨论】:
-
“对 web api 使用相同的模型对象,并且只公开少数字段” - 使用视图模型,使用匿名类型或 use a custom serializer per application or endpoint。您的研究表明了什么?
标签: c# json asp.net-web-api reflection properties