Json.NET 6.0.1增加了对记录和歧视工会的F#支持.当使用Json.NET序列化F#记录类型时,我现在可以获得格式良好的JSON.
序列化如下:
let converters = [| (new StringEnumConverter() :> JsonConverter) |] JsonConvert.SerializeObject(questionSet,Formatting.Indented,converters)
但是,当我尝试通过使用C#编写的ASP.NET WebApi 5.0服务公开我的F#类型时,序列化的JSON包括所有属性的@ -sign表示. @ -sign来自记录类型的内部备份字段(这曾经是Json.Net和F#的已知问题).
但是 – 由于我使用更新版本的Json.NET,结果应该与调用JsonConvert时的结果相同?还是JsonConvert的行为不同于JsonTextWriterand JsonTextReader?
据我从WebApi源中读取JsonMediaTypeFormatter可以看出,JsonTextWriterand JsonTextReader由WebApi使用.
您可以使用[< CLIMutable>]属性装饰您的记录:
[<CLIMutable>] type MyDtr = { Message : string Time : string }
对于很好的XML格式,您可以使用:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer <- true
对于好的JSON格式,您可以使用:
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver <- Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()