2012-11-01 37 views
2

我想返回从ASP.NET MVC的ActionResult类型方法的JSON看起来是这样的:JSON格式在ASP.NET MVC

{ 
    success: true, 
    users: [ 
    {id: 1, FileName: 'Text22'}, 
    {id: 2, FileName: 'Text23'} 
    ] 
} 

我将如何格式化?现在我有这样的东西

Return Json(New With {Key .success = "true", Key .users = responseJsonString}, JsonRequestBehavior.AllowGet) 

编辑:我使用VB.NET,但在C#中的答案也很好。

回答

5

我更喜欢使用ViewModels,而不是手动构建复杂的JSON响应。它确保了所有返回数据的方法的一致性,并且更容易使用强类型的属性恕我直言。

public class Response 
{ 
    public bool Success { get; set; } 
    public IEnumerable<User> Users { get; set; } 
} 

public class User 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

,然后只是:

Response response = new Response(); 
response.Success = true; 
// populate the rest of the data 

return Json(response); 

这也有让您使用一个基类为每一个反应,如果有类似的成功状态,或错误信息的公共数据的优势。

public class ResponseBase 
{ 
    public bool Success { get; set; } 
    public string Message { get; set; } 
} 

public class UserResponse : ResponseBase 
{ 
    IENumerable<User> Users { get; set } 
} 

现在,如果你有一个错误:

return Json(new ResponseBase() { Success = false, Message = "your error" }); 

,或者如果它成功

return Json(new UserResponse() { Success = true, Users = users }); 

如果你想手动工艺的JSON,然后只是:

return Json(new { success = true, users = new[] { new { id = 1, Name = "Alice"}, new { id = 2, Name = "Bob"} } }); 
+0

只是我正在寻找的解释,谢谢! –

1
在C#

return Json(new 
    { 
     success = true, 
     users = new[] 
      { 
       new {id = 1, FileName = "Text22"}, new {id = 2, FileName = "Text23"} 
      } 
    }, JsonRequestBehavior.AllowGet); 

返回

{ “成功”:真, “用户”:[{ “ID”:1, “文件名”: “Text22”},{ “ID” :2,“FileName”:“Text23”}]}