【问题标题】:F# WebAPI default deserialization producing @ signF# WebAPI 默认反序列化产生@符号
【发布时间】:2016-09-18 20:25:01
【问题描述】:

我正在开发一个 F# Web API 应用程序 - https://github.com/odytrice/Dumia

当我尝试发送以下记录的数组时,

[<CLIMutable>]
type Product = 
   { ProductID : int
     Code : string
     Name : string
     Price : decimal
     ImageUrl : string }

[<CLIMutable>]
type Inventory =
   { Product: Product
     Quantity: int }

这是我当前的 WebAPI 配置

let registerWebApi (app:IAppBuilder) = 

    let config = new HttpConfiguration()
    // Configure routing
    config.MapHttpAttributeRoutes()

    // Remove XML Formatter
    config.Formatters.Clear()

    let formatter = new JsonMediaTypeFormatter()
    formatter.UseDataContractJsonSerializer <- false
    config.Formatters.Add(formatter)

    config.Services.Replace(typeof<IHttpControllerActivator>, CompositionRoot())

    app.UseWebApi(config)

我的 Web API 正在生成以下输出

{
   Product@: {
       ProductID@: 1,
       Code@: "Bag-01",
       Name@: "Ladies Bag",
       Price@: 120,
       ImageUrl@: "/content/images/bag.jpg"
   },
   Quantity@: 15
}

有人知道如何摆脱@符号吗?

【问题讨论】:

    标签: f# json.net asp.net-web-api2


    【解决方案1】:

    问题在于 WebAPI 使用的默认 DataContract。

    我不得不把它改成

    config.Formatters
          .JsonFormatter
          .SerializerSettings
          .ContractResolver 
               <- Serialization.DefaultContractResolver()
    

    或者更好

    config.Formatters
          .JsonFormatter
          .SerializerSettings
          .ContractResolver 
               <- Serialization.CamelCasePropertyNamesContractResolver()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多