我有以下行动方法:
public class MyDeviceController : ApiController
{
// GET api/<controller>
public JsonResult Get()
{
int userId = -1;
List<String> myDevices1 = new List<String>();
myDevices1.Add("1");
>> return Json(myDevices1); << Error here
}
}
返回带有下划线红色,并显示以下错误:
cannot implicitly convert type (JsonResult to List<string>)
我使用的是Asp.net Web Api。我认为它在使用System.web.http和System.mvc.http之间感到困惑 ħ
答案 0 :(得分:5)
你的系统混淆了
System.Web.Http.Results.JsonResult<List<string>>
和System.Web.Mvc.JsonResult
尝试指定全名,即System.Web.Http.Results.JsonResult&gt;
public System.Web.Http.Results.JsonResult<List<string>> Get()
{
int userId = -1;
List<String> myDevices1 = new List<String>();
myDevices1.Add("1");
return Json(myDevices1);
}
另一种优选的方法是
public HttpResponseMessage Get()
{
int userId = -1;
List<String> myDevices1 = new List<String>();
myDevices1.Add("1");
return Request.CreateResponse(myDevices1);
}
在后者中,asp.net web api将自动在客户端接受的格式之间进行协商,该格式在Accepts
标头中指定并适当地发送XML或JSON
答案 1 :(得分:0)
我定义的班级中的web api项目城市 JsonResult列表转换并返回。
public class City
{
public int Id { get; set; }
public string CityName{ get; set; }
}
static List<City> _City = InitCitys();
private static List<City> Citys()
{
var returnList = new List<City>();
returnList.Add(new City{ Id = 0, CityName= "Sinop" });
returnList.Add(new City{ Id = 1, CityName= "Ayancık" });
returnList.Add(new City{ Id = 2, CityName= "İstanbul" });
return returnList;
}
// GET api/values
public JsonResult<City> Get(int Id)
{
var cityJsonResult = _City.Where(x => x.Id == Id).SingleOrDefault();
return Json(cityJsonResult);
}
答案 2 :(得分:-1)
当您使用web api时: 您可以这样保留代码:
public class MyDeviceController : ApiController
{
// GET api/<controller>
public List<string> Get()
{
int userId = -1;
List<String> myDevices1 = new List<String>();
myDevices1.Add("1");
return myDevices;
}
}
默认情况下,它会返回XML但是
在WebApiConfig.cs
中添加这行代码,默认情况下将返回json:
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
详细了解WEB API media Formatters
还有另一种做事方式(不是最佳方法):
using Newtonsoft.Json;
public HttpResponseMessage get(){
List<String> myDevices1 = new List<String>();
myDevices1.Add("1");
JsonConvert.SerializeObject(myDevices1);
return Request.CreateResponse(HttpStatusCode.OK, myDevices1);;
}