以对象名称返回Json格式的数据

Cod*_*ute 2 c# rest ienumerable json

为Web API 2编写了一个简单的函数,它返回了国家/地区列表.它返回有效的Json格式,但没有数组/对象名称.我有点难以理解这是如何实现的?

这是我的C#代码:

[Route("Constants/CountryList")]
[HttpGet]
public IHttpActionResult GetCountryList()
{
    IEnumerable<ISimpleListEntity> list = new CountryStore().SimpleSortedListByName();
    if (list == null || !list.Any())
    {
        return NotFound();
    }

    return Ok(list);
}
Run Code Online (Sandbox Code Playgroud)

ISimpleListEntity接口代码在这里.

public interface ISimpleListEntity
{
    int Id { get; set; }
    string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

此服务返回以下Json输出(没有对象/数组名称):

[  
   {  
      "Id":1,
      "Name":"[Select]"
   },
   {  
      "Id":4,
      "Name":"India"
   },
   {  
      "Id":3,
      "Name":"Singapore"
   },
   {  
      "Id":2,
      "Name":"United Arab Emirates"
   }
]
Run Code Online (Sandbox Code Playgroud)

但是,我正在努力实现以下Json格式(使用名为'CountryList'的对象/数组名称):

{  
   "CountryList":[  
      {  
         "Id":1,
         "Name":"[Select]"
      },
      {  
         "Id":4,
         "Name":"India"
      },
      {  
         "Id":3,
         "Name":"Singapore"
      },
      {  
         "Id":2,
         "Name":"United Arab Emirates"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 9

您可以根据Boas的答案为此创建一个特定的类,或者只使用匿名类型:

return Ok(new { CountryList = list });
Run Code Online (Sandbox Code Playgroud)

基本上,您需要具有适当属性的对象,无论是哪种方式.如果你想稍后反序列化并保持编译时检查,那么创建一个类是值得的 - 但如果你要么使用动态类型,要么消费者不会是C#代码,那么匿名类型会更简单.

  • @CoderAbsolute:不 - 它是*一个对象*,你正在响应一个网络请求.你已经在努力获取数据......创建一个额外的对象将是完全无关紧要的. (2认同)