我正在使用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?