在ASP.NET Web API中返回动态键值集合

Wai*_*ein 2 c# asp.net namevaluecollection asp.net-web-api keyvaluepair

我正在开发一个ASP.Net Web API项目.在我的项目中,我试图以这种格式从动作中返回JSON.

{
  "Apple": null,
  "Microsoft": null,
  "Google": 'http://placehold.it/250x250'
}
Run Code Online (Sandbox Code Playgroud)

正如您在JSON中看到的那样,它是键值对.键和值都是动态的.所以我试图NameValueCollection从行动中返回以获得该格式.请参阅下面的代码.

public class CompaniesController : ApiController
{
    // GET api/<controller>
    public HttpResponseMessage Get()
    {
        NameValueCollection collection = new NameValueCollection();
        collection.Add("Microsoft", "microsoft.com");
        collection.Add("Google", "google.com");
        collection.Add("Facebook", "facebook.com");
        return Request.CreateResponse(HttpStatusCode.OK, collection, "application/json");
    }
}
Run Code Online (Sandbox Code Playgroud)

但后来我访问了该操作,它返回JSON,如下所示.

在此输入图像描述

如您所见,它只返回Keys.姓名不包括在内.那不是我想要的格式.请问如何修复我的代码以获取返回的名称值对.

Nko*_*osi 7

使用Dictionary<string, object>添加键值对.

public class CompaniesController : ApiController {
    // GET api/<controller>
    public HttpResponseMessage Get() {
        var collection = new Dictionary<string, object>();
        collection.Add("Microsoft", "microsoft.com");
        collection.Add("Google", "google.com");
        collection.Add("Facebook", "facebook.com");
        return Request.CreateResponse(HttpStatusCode.OK, collection, "application/json");
    }
}
Run Code Online (Sandbox Code Playgroud)

application/json,以上将返回

{
  "Microsoft": "microsoft.com",
  "Google": "google.com",
  "Facebook": "facebook.com"
}
Run Code Online (Sandbox Code Playgroud)