我有一个MVC 4 Web API。通常我希望响应返回所有属性,但有一个地方我只想返回非空值。我可以通过设置全局文件中Formatters.JsonFormatter.SerializerSettings.NullValueHandling
实例的GlobalConfiguration.Configuration
的JsonSerializerSettings来设置任一行为,但我想根据响应使用两者。是否有一种简单的方法可以在API控制器操作中配置请求范围?
答案 0 :(得分:2)
通过更改控制器操作以返回HttpResponseMessage,您可以更好地控制为特定操作返回内容的方式。 e.g。
public HttpResponseMessage Get() {
var foo = new Foo();
var objectContent = new ObjectContent<Foo>(foo, new JsonFormatter()
{SerializerSettings.NullValueHandling = ???})
return new HttpResponseMessage() {Content = objectContent};
}
答案 1 :(得分:0)
使用动态语言(如javascript)在客户端可能更容易做到这一点。
var keys = Object.keys(json);
for(var i = 0; i < keys.length; i++) {
var propertyName = keys[i];
if(json[propertyName] === undefined || v[propertyName] === null) {
json.remove(propertyName);
}
}
return json;