C# JavaScriptSerialized JSON字符串在fiddler上显示无效消息
我正在构建一个WEB API,它应该从SQL Server数据库中检索事件列表,并以JSON格式创建这些对象对客户端的响应 事件对象:C# JavaScriptSerialized JSON字符串在fiddler上显示无效消息,c#,asp.net,json,asp.net-web-api,C#,Asp.net,Json,Asp.net Web Api,我正在构建一个WEB API,它应该从SQL Server数据库中检索事件列表,并以JSON格式创建这些对象对客户端的响应 事件对象: public class OCEvents { public long event_id { get; set; } public string event_date {get; set;} public string event_time { get; set;} public string event_location { g
public class OCEvents
{
public long event_id { get; set; }
public string event_date {get; set;}
public string event_time { get; set;}
public string event_location { get; set;}
public string event_name { get; set; }
public string event_image { get; set; }
public string event_description { get; set; }
}
用于检索事件JSON数据的简单Web API控制器
public class EventsController : ApiController
{
private string JSONResponse = "";
public string getEvents()
{
//Create class the haandles all DB related data
DBConnect db = new DBConnect();
//Creates List of Event Objects
List<OCEvents> events = new List<OCEvents>();
//get latest events posted
db.getOCEvents(events);
//Serialize event objects to JSON
JSONResponse = new JavaScriptSerializer().Serialize(events);
//return JSON Response
return JSONResponse;
}
}
我的问题是打开JSON选项卡时出现了这个错误
我终于明白了。问题是getEvents方法返回的是字符串而不是HTTP响应对象。因此,我没有返回JSON字符串,而是使用了这个
public HttpResponseMessage getEvents()
{
//Create class the haandles all DB related data
DBConnect db = new DBConnect();
//Creates List of Event Objects
List<OCEvents> events = new List<OCEvents>();
//get latest events posted
db.getOCEvents(events);
//Serialize event objects to JSON
JSONResponse = new JavaScriptSerializer().Serialize(events);
var response = new HttpResponseMessage()
{
Content = new StringContent(JSONResponse)
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
//return JSON Response
return response;
}
public HttpResponseMessage getEvents()
{
//创建类处理所有数据库相关数据
DBConnect db=新的DBConnect();
//创建事件对象列表
列表事件=新列表();
//发布最新事件
db.getOCEvents(事件);
//将事件对象序列化为JSON
JSONResponse=newJavaScriptSerializer().Serialize(事件);
var response=newhttpresponsemessage()
{
内容=新的StringContent(JSONResponse)
};
response.Content.Headers.ContentType=新的MediaTypeHeaderValue(“应用程序/json”);
//返回JSON响应
返回响应;
}
您可以让系统根据用户原始请求中的accept标头来创建JSON或XML
public HttpResponseMessage getEvents()
{
//Create class the haandles all DB related data
DBConnect db = new DBConnect();
//Creates List of Event Objects
List<OCEvents> events = new List<OCEvents>();
//get latest events posted
db.getOCEvents(events);
return Request.CreateResponse(HttpStatusCode.OK, events);
}
public HttpResponseMessage getEvents()
{
//Create class the haandles all DB related data
DBConnect db = new DBConnect();
//Creates List of Event Objects
List<OCEvents> events = new List<OCEvents>();
//get latest events posted
db.getOCEvents(events);
return Request.CreateResponse(HttpStatusCode.OK, events);
}
//Remove XML so only JSON is returned
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);