我在WebAPI控制器中有一个模型和一个动作
public class MyModel
{
public ClassA ObjA { get; set; }
public ClassB ObjB { get; set; }
public ClassC ObjC { get; set; }
}
和行动:
[HttpGet]
public MyModel GetMyModel()
{
MyModel result = someMethod();
return result;
}
result
中的某些属性可能为null。我知道我可以使用[JsonIgnore]
来忽略序列化的属性,但我希望它是动态的,并且取决于从someMethod()
返回的数据。是否有可能只返回MVC4 .net中JSON中不是null
的属性,以便客户在响应中不会获得"ObjA": null
之类的内容?基本上我想隐藏一些他们不需要关心的客户的财产。
答案 0 :(得分:0)
您可以使用以下内容获取对象的属性列表:
PropertyInfo[] properties = result.GetType().GetProperties();
然后,您可以遍历属性列表,并创建一个仅包含非空值的键/值集合。
var notNullProperties = new Dictionary<string, object>();
foreach (PropertyInfo property in properties)
{
object propertyValue = property.GetValue(result, null);
if (propertyValue != null)
{
notNullProperties.Add(property.Name, propertyValue);
}
}
然后返回序列化字典。