更改Asp.Net Web Api序列化方法

时间:2016-08-15 09:43:01

标签: c# json asp.net-web-api

我正在使用Aps.Net Web Api 2.0项目,其中我以Json格式返回数据库数据。我正在用C#替换现有的JAVA应用程序。到目前为止,除了我的web api格式化返回数据之外,它还没有问题。这很糟糕,因为我希望返回数据与现有的返回数据相同。

我的webapi控制器类:

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Headers;
using System.Web.Http;

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "foo/bar/{controller}"

        );

        // Sets default output to Json for most requests
        // http://stackoverflow.com/questions/9847564/how-do-i-get-asp-net-web-api-to-return-json-instead-of-xml-using-chrome
        config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
        // supress null values, format date
        config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings { 
            NullValueHandling = NullValueHandling.Ignore, 
            DateFormatString = "yyyy-MM-dd" 
        };
    }
}

给定对象:

dummyobject foobar = new dummyobject
{
    stringval = "string with spaces at end     ",
    zerodecimal = 0M
};

我当前的json响应字符串:

{ 
    "stringval":"string with spaces at end ",
    "zerodecimal":0.0
}

我需要的json响应:

{ 
    "stringval":"string with spaces at end     ";
    "zerodecimal":0
}

更新 所以我发现默认的api Json序列化器是Newtonsoft.Json库。它有一堆设置,但我没有用它来序列化我想要序列化的方式。但是JavaScriptSerializer确实正确序列化:

JavaScriptSerializer Foo= new JavaScriptSerializer();
StringBuilder Bar = new StringBuilder();
Foo.Serialize(foobar, Bar);
return builder.ToString();

所以要更新我的问题,如何更改默认的web api序列化程序?从NewtonSoft到JavaScriptSerializer?

0 个答案:

没有答案