首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAVAScriptSerilized JSON字符串在fiddler上显示无效消息

JAVAScriptSerilized JSON字符串在fiddler上显示无效消息
EN

Stack Overflow用户
提问于 2016-04-18 17:14:15
回答 2查看 54关注 0票数 0

我正在构建一个WEB API,它应该从SQL Server数据库中检索事件列表,并在JSON中创建这些对象对客户端的响应

事件对象:

代码语言:javascript
复制
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控制器

代码语言:javascript
复制
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;
    }
}

这是来自事件控制器的原始回发(响应)

代码语言:javascript
复制
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcREFOT05FXERvY3VtZW50c1xCaXpcTW9iaWxlIEFwcGxpY2F0aW9uIERldmVsb3BtZW50IERvY3VtZW50c1xQcm9qZWN0c1xPdXJDaHVyY2hBUElcT3VyQ2h1cmNoQVBJXGFwaVxldmVudHM=?=
X-Powered-By: ASP.NET
Date: Mon, 18 Apr 2016 08:58:41 GMT
Content-Length: 1061

"[{\"event_id\":5,\"event_date\":\"13 January 2016\",\"event_time\":\"12:00\",\"event_location\":\"South Africa,North West,Rustenburg,Church\",\"event_name\":\"Imposition of Ashes\",\"event_image\":\"\",\"event_description\":\"Come anytime from 12:00 noon to 1:00 p.m for quiet meditation and prayer. Clergy will be available for the imposition of ashes.\"},{\"event_id\":7,\"event_date\":\"13 January 2016\",\"event_time\":\"19:00\",\"event_location\":\"South Africa,North West,Rustenburg,Church\",\"event_name\":\"Ash Wednesday Service\",\"event_image\":\"\",\"event_description\":\"Join us as we mark the begining of the season off Lent with a traditional Ash Wednesday service ,including imposition of ashes.\"},{\"event_id\":1,\"event_date\":\"08 January 2016\",\"event_time\":\"14:00\",\"event_location\":\"South Africa,North West,Rustenburg,Church\",\"event_name\":\"Special Worship Service\",\"event_image\":\"\",\"event_description\":\"Rev. Dr Amy Bulter, preaching Sermon--\\u0027Shine, Jesus,Shine\\u0027hebrew Scripture Lesson--Exodus 34:29-35.\"}]"

我的问题是在打开JSON选项卡时出现此错误

Fiddler screenshot with inspector & json tab open

EN

回答 2

Stack Overflow用户

发布于 2016-04-18 23:51:00

我终于想通了。问题是getEvents方法返回的是字符串,而不是HTTP Response对象。因此,我没有返回JSON字符串,而是使用了这个。

代码语言:javascript
复制
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;
    }
票数 0
EN

Stack Overflow用户

发布于 2016-04-19 02:49:01

您可以让系统根据用户原始请求中的accept头创建JSON或XML。

代码语言:javascript
复制
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);
    }

如果您想强制使用JSON,那么在WepApiConfig中删除XML格式化程序。

代码语言:javascript
复制
    //Remove XML so only JSON is returned
    GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36689823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档