加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读