ServiceStack.Text 在应用程序启动时设置 JsConfig

ServiceStack.Text set JsConfig on application start

我在 asp net mvc 应用程序的 Application_Start 方法中设置了 JsConfig

 protected void Application_Start()
        {
            JsConfig.DateHandler = JsonDateHandler.ISO8601;
            JsConfig.EmitCamelCaseNames = true;
        }

然后我想在我的服务方法中使用扩展方法 ToJson,例如

public string testMethod{
    //here code
    var obj = new TestObj{
        Id = 1,
        CurrentDate = DateTime.Now
    }
    return obj.ToJson();
}

然后我查看结果,我看到 json 导致 PascalCase 和日期格式如下 Date(123455678990),但在我在配置中设置使用 camelCase 和 utc 格式日期之前

但我在我的服务方法中设置了配置,例如:

public string testMethod{
    //here code
JsConfig.DateHandler = JsonDateHandler.ISO8601;
            JsConfig.EmitCamelCaseNames = true;
    var obj = new TestObj{
        Id = 1,
        CurrentDate = DateTime.Now
    }
    return obj.ToJson();
}

我得到了我想要的结果

是否可以在启动我的应用程序时设置 JsConfig 属性?

在 Global.asax 中的 Application_Start() 处设置 JsConfig 属性确实按预期设置了 JSON 序列化首选项的全局配置。

我在测试 MVC 项目 in this commit 中添加了一个示例,它按预期工作,在 Application_Start():

中设置了静态 JsConfig 配置
public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        JsConfig.Init(new Config {
            DateHandler = DateHandler.ISO8601,
            TextCase = TextCase.CamelCase
        });
        //...
    }
}

并在控制器中序列化 JSON:

return new HomeViewModel
{
    Name = name,
    Json = new TestObj { Id = 1, CurrentDate = DateTime.Now }.ToJson()
};

按预期序列化:

{"id":1,"currentDate":"2016-06-29T11:56:45.7517089-04:00"}