Webapi如何以JSON开头的json响应命名

时间:2016-06-23 11:00:49

标签: json asp.net-web-api fiddler

我开发了一个asp.net webapi并使用fiddler对其进行测试。我得到的回复如下所示:

而不是这个

{
  "name":"A",
  "age":"B"
}

可以改变如下吗?

User{
    "name":"A",
    "age":"B"
}

但是不是以JSON开头的响应,我想拥有自定义名称。任何人都可以帮助如何实现这一目标吗?

由于

1 个答案:

答案 0 :(得分:2)

您似乎希望将回复包装在"包装中"或"容器"类。鉴于您当前的课程和响应如下:

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

public User Get(int id)
{
    return _userRepository.Find(id);
}

然后你可以简单地添加这个包装类:

public class UserContainer
{
    public User User { get; set; }
}

在你的控制器中包装它:

public UserContainer Get(int id)
{
    var user = _userRepository.Find(id);
    return new UserContainer
    {
        User = user
    }
}

这会使您的回复看起来像这样:

{
    "User" :
    {
        "Name" : "Foo",
        "Age" : 42
    }
}

但请注意,这在语义上是不必要的。客户端已经在调用/api/user/42端点,因此他们希望用户返回。没有必要再次在您的JSON中指明。