每个响应设置JsonSerializerSettings?

时间:2012-11-30 20:19:36

标签: asp.net-mvc json asp.net-web-api

我有一个MVC 4 Web API。通常我希望响应返回所有属性,但有一个地方我只想返回非空值。我可以通过设置全局文件中Formatters.JsonFormatter.SerializerSettings.NullValueHandling实例的GlobalConfiguration.Configuration的JsonSerializerSettings来设置任一行为,但我想根据响应使用两者。是否有一种简单的方法可以在API控制器操作中配置请求范围?

2 个答案:

答案 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;