【问题标题】:Returns json result and convert null to empty string返回 json 结果并将 null 转换为空字符串
【发布时间】:2013-02-24 20:48:30
【问题描述】:

我有一个返回 json 结果的操作,但有些属性为空,我想将它们转换为空字符串。我听说我可以使用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;
}

【问题讨论】:

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


    【解决方案1】:

    您不能将 nullable int 设置为默认值 ""

    试试

    [DefaultValue(0)]
    public int? Bar2;
    

    【讨论】:

      【解决方案2】:

      就像@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; }
      }
      

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

      【讨论】:

      • 非常有趣的实现。我会学习并利用它。
      • @Dave A:Tnx!我希望你会发现它有用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多