返回json结果并将null转换为空字符串

时间:2013-03-09 08:23:41

标签: c# asp.net asp.net-mvc json asp.net-mvc-4

我有一个返回json结果的动作,但是有些属性为null,我想将它们转换为空字符串。我听说我可以使用DefaultValue(""),但它仍然会返回null而不是空字符串。

行动是:

[HttpGet]
public ActionResult GetResults(string date)
{
    var data= GetData();  // returns List<Foo>
    var json = Json(data, JsonRequestBehavior.AllowGet);
    return json;
}

Foo类是:

public class Foo
{
    public string Bar1;

    [DefaultValue("")]
    public int? Bar2;
}

2 个答案:

答案 0 :(得分:4)

您无法将nullable int设置为默认值""

陷阱>

[DefaultValue(0)]
public int? Bar2;

答案 1 :(得分:3)

与@Dave A一样,注意到你不能将字符串值赋给int值。

但是有一件事我想警告它,你有没有正确设置属性DefaultValueHandling?请在此处查看:Removing Default Values in JSON with the MVC4 Web API

除此之外,我建议您使用表示此Bar2 int属性的字符串属性,并“忽略”它以进行序列化,例如:

[JsonIgnore]
[DefaultValue(0)]
public int? Bar2Int;

public string Bar2
{
   return { Bar2Int.HasValue ? this.Bar2Int.Value.ToString() : String.Empty; }
}

使用此方法更好,您不需要任何默认值属性。