F#,Json.NET 6.0和WebApi – 记录类型的序列化
发布时间:2020-12-16 19:48:55 所属栏目:百科 来源:网络整理
导读:Json.NET 6.0.1增加了对记录和歧视工会的F#支持.当使用Json.NET序列化F#记录类型时,我现在可以获得格式良好的JSON. 序列化如下: let converters = [| (new StringEnumConverter() : JsonConverter) |]JsonConvert.SerializeObject(questionSet,Formatting.I
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 } That’s what I do. 对于很好的XML格式,您可以使用: GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer <- true 对于好的JSON格式,您可以使用: config.Formatters.JsonFormatter.SerializerSettings.ContractResolver <- Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |