如何以特定格式从web api获取json响应

时间:2014-12-05 10:14:24

标签: json asp.net-web-api

在我的应用程序中,从webapi返回的默认json结果是这样的 -

 [{"Id":1,"Name":"Nayas","Email":"nayas@gmail.com"},   {"Id":2,"Name":"Ramesh","Email":"ramesh@gmail.com"}].

我希望它采用以下格式

 {
"success": true,
"users": [
    {"id": 1, "name": 'Ed',    "email": "ed@sencha.com"},
     {"id": 2, "name": 'Tommy', "email": "tommy@sencha.com"}
]
}

键值对

这是我的行动方法

public IEnumerable<User>GetUserList()
{ 
    return userlist;
}

和我的模特

public class User 
{ 
    [Key] 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Email { get; set; }
}

3 个答案:

答案 0 :(得分:1)

如果要返回这种JSON,最好的方法是返回一个单独的模型,其中包含成功的指示和用户列表。

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

你的行动方法可能是这样的:

public ResponseModel GetUserList()
{ 
    var response = new ResponseModel { Success = true, Users = userlist };
    return response;
}

答案 1 :(得分:1)

如果您希望Json的格式以某种方式存在,那么您所要做的就是确保您的C#(或您选择的.net语言)与您希望看到的匹配。

在你的例子中然后是Json:

 {
"success": true,
"users": [
    {"id": 1, "name": 'Ed',    "email": "ed@sencha.com"},
     {"id": 2, "name": 'Tommy', "email": "tommy@sencha.com"}
]
}

将表示为:

public class YourRootObjectName
{
  public bool Success {get;set;}
  public IEnumberable<User> Users {get;set;}
}

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

然后您必须将值映射到此结构。发布您的WebApi控制器代码以及您正在使用的DTO课程,您将更加清楚自己想要实现的目标。

答案 2 :(得分:0)

var input= [{"Id":1,"Name":"Nayas","Email":"nayas@gmail.com"},{"Id":2,"Name":"Ramesh","Email":"ramesh@gmail.com"}].

var output={}
output.success=true
output.users=input