【问题标题】:How can my MVC controller produce JSON in the following format?我的 MVC 控制器如何生成以下格式的 JSON?
【发布时间】:2013-02-19 16:35:42
【问题描述】:

我正在尝试将 jQuery validation engine 与我的 MVC 项目集成以执行内联验证。我在 jQuery 表单中有一个字段,它正在调用 MVC 控制器并期望 JSON 响应。根据插件作者写的this article...

现在这会将 ajax 中的字段发送到定义的 url,并等待 响应,响应需要是一个 json 编码的数组 遵循以下语法:["id1", boolean status].

所以在 php 中你会这样做: echo json_encode($arrayToJs);

如何在 ASP.NET MVC4 中实现这一点?

我当前的控制器看起来像这样。

public JsonResult FunctionName(string fieldValue)
{
        return Json((new { foo = "bar", baz = "Blech" }), JsonRequestBehavior.AllowGet);
}

响应正文显示它返回如下所示的键值对

{"foo":"bar","baz":"Blech"}

如何以预期格式返回 JSON?

【问题讨论】:

  • ["id1", boolean status] 不是有效的 JSON。 ["id1", "boolean status"] 将是有效的 JSON。目前还不清楚您希望 {"foo":"bar","baz":"Blech"} 看起来像什么。
  • 澄清一下,您在顶部显示的是一个 JSON 数组(无效数组)。您在底部显示的是一个 JSON 对象。
  • 无效的JSON格式直接引自文章。根据文章,我需要控制器返回一个数组。
  • 您可以在 JSON 数组中混合类型,但布尔状态是两个词。即使一个或两个是某种类型的值,一个 json 数组元素也不能由两个东西组成,在这种情况下,布尔值和状态。例如,如果 booleanStatus 是一个具有布尔值的变量,那将是一个有效的 JSON 数组元素。所以,无论文章是否引用,都是无效的 JSON。
  • 现在很明显,文章作者使用了无效语法。他应该简单地将“布尔状态”替换为真或假。下面 Rob 的回答从我的控制器中得到了适当的响应。

标签: json asp.net-mvc-4 controller jquery-validation-engine


【解决方案1】:

方括号表示 JSON 对象中的数组。

见这篇文章:http://www.w3schools.com/json/json_syntax.asp

这个测试代码:

return Json(new object[] { "id1", false }, JsonRequestBehavior.AllowGet);

应该返回:

["id1",false]

【讨论】:

  • 工作就像一个魅力!谢谢罗!
【解决方案2】:

如果你想在 json 中返回一个数组,我想你会这样做。然后你可以返回一个字典。由于您传入的匿名类型,您现在在 json 输出中看不到数组是两个键值。

public JsonResult MyMethodName(string name)
{
    IDictionary<string, bool> myDict = LoadDictionaryFromSomewhere();
    return Json(myDict, JsonRequestBehaviour.AllowGet);
}

【讨论】:

  • 我确实想返回一个 JSON 数组。我不想从其他来源加载字典。
  • @user2048857 这就是字典将变成的,一个 Json 数组,因此您将返回一个 json 数组。与您的示例不同,它还将输出有效的 json
  • 那太好了。太糟糕了,它没有帮助。还有*你是
  • 公平地说,如果你表现出一点主动性,你就会看到;)
猜你喜欢
  • 2016-01-31
  • 2020-08-29
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 2022-11-17
  • 2019-10-16
  • 1970-01-01
相关资源
最近更新 更多