【问题标题】:How can I return an empty Json from Controller?如何从 Controller 返回一个空的 Json?
【发布时间】:2018-08-29 12:07:54
【问题描述】:

开发者!

我在stackoverflow 上发现了一个类似的问题,但解决方案对我没有帮助。所以我再次发帖。

我正在尝试从控制器返回 Json 类型的集合。但不是null,我想返回一个像Enumerable.Empty<>() 这样的空集合。我也在其他网站上搜索过,但没有任何帮助。

我尝试了new EmptyResult()stackoverflow 的解决方案,但没有成功)

这里是代码。

public JsonResult GetOrderDetail(int? id)
{
if(id.HasValue)
{
    var first = ObjectFactory.GetInstance<ICustomerRepository>().Method();
    var second = ObjectFactory.GetInstance<IShopRepository>().Method();
    return Json(new
    {
        first,
        second
    }
}
return null;
}

所以,在这里我想返回一个空集合而不是 null。可能吗?我该怎么做? 我是 C# 新手。如果问题首先是愚蠢或错误的,我很抱歉。

【问题讨论】:

  • 请更新您的问题以显示您想要返回的确切 JSON不要使用collection之类的词——实际字符串才是我们需要看到的。
  • 你能解释一下I want to return an Empty Collection但是什么是空集合吗?字符串、整数或您的模型?
  • 试试这个public JsonResult GetJson() { var list = new List&lt;string&gt;(); return Json(list ?? Enumerable.Empty&lt;string&gt;(), JsonRequestBehavior.AllowGet); }
  • @ershoaib 我想返回一个 Json 类型的空集合。我实际上更新了这个问题,因为 mjwills 的第一条评论
  • 试试这个return Json(new object[] { new object() }, JsonRequestBehavior.AllowGet);

标签: c# json collections controller


【解决方案1】:

Json.NET

使用Json.NET 时,您可以使用并清空JObjectJArray

这是在 C# 中使用 JSON 的最常见和推荐的方法。可以通过NuGet将其添加到项目中。

【讨论】:

  • 你可以用return JObject()返回一个空的JSON对象,或者用return JArray()返回一个空的JSON数组(根据你的项目添加正确的Json.NET导入或包前缀).
【解决方案2】:

我找到了解决方案。我只需要这样做。代替null,我写了Json(new EmptyResult())。所以该方法最终不会返回任何内容,但不会返回 null 值。

【讨论】:

  • 这会返回什么实际的 JSON(如果您查看 http 请求)?
  • @mjwills 如果 Json 对象 firstsecond 没有数据,则方法 GetOrderDetail() 将不返回任何内容。由于集合是空的,它会给出一个 Empty 结果。
  • 那么""? []?还有什么?你能检查一下 Chrome 开发者工具吗?
  • 开发者工具显示返回{}的响应——不是我要找的
猜你喜欢
  • 2020-09-22
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
  • 2018-02-16
  • 2011-09-01
相关资源
最近更新 更多