2013-02-19 52 views
-1

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

现在,这将在阿贾克斯发送现场定义的URL,并等待 响应,响应必须按照以下语法在JSON 编码的数组:[“id1”,布尔状态]

所以在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?

+0

'[ “ID1”,布尔状态]'是不是有效的JSON。 '[“id1”,“布尔状态”]'是有效的JSON。目前还不清楚你想要什么“{”foo“:”bar“,”baz“:”Blech“}。 – Pete 2013-02-19 16:39:42

+0

为了澄清,你在顶部显示的是一个JSON数组(一个无效数组)。你在底部显示的是一个JSON对象。 – Pete 2013-02-19 16:42:02

+0

无效的JSON格式直接从文章引用。根据文章,我需要控制器返回一个数组。 – 2013-02-19 17:10:23

回答

2

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

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

这个测试代码:

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

应该返回:

["id1",false] 
+0

工作就像一个魅力!感谢Rob! – 2013-02-19 17:58:19

+0

很高兴能帮到你! – Rob 2013-02-19 17:58:55

0

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

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

我确实想返回一个JSON数组。我不想从其他来源加载字典。 – 2013-02-19 17:13:58

+0

@ user2048857这就是多么一个字典将成为一个Json数组,所以你将返回一个JSON数组。它也会输出有效的json,与你的例子不同 – gdp 2013-02-19 17:50:11

+0

那很好。太糟糕了,这没有帮助。另外*你是 – 2013-02-20 13:56:08