Webapi 如何命名 json 响应而不是以 JSON 开头

Webapi how to have a name the json response instead starting with JSON

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

而不是这个

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

可以改成下面这样吗?

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

但我想要的不是以 JSON 开头的响应,而是自定义名称。谁能帮助实现这一目标?

谢谢

您似乎想将您的回复包裹在 "wrapper" 或 "container" class 中。鉴于您当前的 class 和响应如下所示:

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

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

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

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 中指明。