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 中指明。
我开发了一个 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 中指明。