Webapi如何将名称命名为json响应,而不是以json开头

Webapi如何将名称命名为json响应,而不是以json开头,json,asp.net-web-api,fiddler,Json,Asp.net Web Api,Fiddler,我开发了一个asp.NETWebAPI,并使用fiddler对其进行了测试。我得到的答复如下所示: 而不是这个 { "name":"A", "age":"B" } 可以按以下方式进行更改吗 User{ "name":"A", "age":"B" } 但是,我希望使用自定义名称,而不是以JSON开头的响应。有谁能帮助实现这一目标 谢谢您似乎想将您的响应包装在“包装器”或“容器”类中。鉴于您当前的类别和响应如下所示: public class User { pub

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

而不是这个

{
  "name":"A",
  "age":"B"
}
可以按以下方式进行更改吗

User{
    "name":"A",
    "age":"B"
}
但是,我希望使用自定义名称,而不是以JSON开头的响应。有谁能帮助实现这一目标


谢谢

您似乎想将您的响应包装在“包装器”或“容器”类中。鉴于您当前的类别和响应如下所示:

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

public User Get(int id)
{
    return _userRepository.Find(id);
}
{
    "User" :
    {
        "Name" : "Foo",
        "Age" : 42
    }
}
然后,您可以简单地添加此包装器类:

public class UserContainer
{
    public User User { get; set; }
}
并在控制器中包装它:

public UserContainer Get(int id)
{
    var user = _userRepository.Find(id);
    return new UserContainer
    {
        User = user
    }
}
这将使您的回答如下所示:

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

public User Get(int id)
{
    return _userRepository.Find(id);
}
{
    "User" :
    {
        "Name" : "Foo",
        "Age" : 42
    }
}

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

您所说的“自定义名称”是什么意思?这不是JSON。我是否需要将响应封装在类中以获得名称?您是指
{“User”:{…}}
还是有意返回无效的JSON?如果是前者,那么是的,只需引入一个包含一个属性的“包装器”或“容器”类:
公共用户{get;set;}
。是的,它与前者类似。好的,我会介绍一个包装或集装箱来招待你。如果以数组形式返回用户,我想我可以使用。在这种情况下,除了其他属性之外,我是否可以排除此用户名以排除camelcase事件?您可以使用
[JsonProperty]
重命名属性,并且也不需要数组的包装器;只需返回一个
IEnumerable
。确定。再次感谢你。