如何在json结果中的ASP.NET MVC4 Web API v.1中将空字符串属性呈现为空字符串? WebAPI将它们呈现为
"myproperty": null
如何将其渲染为
"myproperty": ""
控制器
public class Customer {
public string myproperty { get; set; }
}
public class CustomersController : ApiController
{
public HttpResponseMessage Get()
{
var cust = new Customer();
return Request.CreateResponse(HttpStatusCode.OK,
new { customers = cust.ToArray() });
}
}
对象是嵌套的,包含许多字符串属性。在构造函数中将它们全部设置为空字符串似乎很难看。 API调用者需要空字符串或0代表小数,它不喜欢任何值中的null常量。
答案 0 :(得分:8)
你可以像这样装饰你的房产:
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)]
[DefaultValue("")]
public string myproperty{ get; set; }
请注意,您可以将默认值处理设置为填充全局配置,如下所示:
GlobalConfiguration
.Configuration
.Formatters
.JsonFormatter
.SerializerSettings
.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Populate;
所以,你不需要将它装饰到每个属性。您只需要使用DefaultValue
。
答案 1 :(得分:2)
public class Customer {
private string _myproperty = String.Empty;
public string myproperty
{
get { return _myproperty; };
set { _myproperty = value ?? String.Empty; }
}
}
答案 2 :(得分:0)
我给了一点开销,但解决了我的问题
DataTable dt = (new tst()).Gettable();
string s = string.Empty;
s = Newtonsoft.Json.JsonConvert.SerializeObject(dt);
s= s.Replace("null", "\"\"");
Object obj = Newtonsoft.Json.JsonConvert.DeserializeObject(s);
return Ok(obj);
答案 3 :(得分:-5)
默认情况下,web api的工作原理如下...... 你不需要改变