F#,Json.NET 6.0和WebApi – 记录类型的序列化

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()
翻译自:https://stackoverflow.com/questions/22789504/f-json-net-6-0-and-webapi-serialization-of-record-types

转载注明原文:F#,Json.NET 6.0和WebApi – 记录类型的序列化