在ASP.NET Web API控制器中,我使用JsonResults,如下所示:
sp.call('adb shell "cd /d/asoc/*snd-card*/*_code* && echo %s %s > code_reg"'%(regs,vals), shell=True)
我在WebApiConfig中设置了全局默认设置,正如我在许多地方所建议的那样。
return Json(data);
我认为这会使设置被使用,但事实并非如此。为了解决这个问题,我打电话:
HttpConfiguration config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());
这样可以正常工作,但我是否遗漏了一些使全局序列设置始终适用的内容?
答案 0 :(得分:2)
通过调用Json(数据),您正在执行此重载 - 您可以看到它正在创建一个新的序列化器设置实例
protected internal JsonResult<T> Json<T>(T content)
{
return Json<T>(content, new JsonSerializerSettings());
}
如果您使用其中一个返回协商结果的ApiController方法(例如ApiController.Ok,例如return Ok(data)
),则会从全局配置中解析格式化程序,您将看到所需的行为。