Json.NET 6.0.1为记录和受歧视的联合添加了F#支持.当使用Json.NET序列化F#记录类型时,我现在可以获得格式良好的JSON.
序列化完成如下:
let converters = [| (new StringEnumConverter() :> JsonConverter) |]
JsonConvert.SerializeObject(questionSet, Formatting.Indented, converters)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试通过用C#编写的ASP.NET WebApi 5.0服务公开我的F#类型时,序列化的JSON包含所有属性的@ -sign infront.@ -sign来自记录类型的内部支持字段(这曾经是Json.Net和F#的已知问题).
但是 - 因为我使用的是Json.NET的更新版本,结果应该与调用JsonConvert时的结果相同吗?或者JsonConvert表现得JsonTextWriter和JsonTextReader?不同?
据我从读讲JsonMediaTypeFormatter在的WebAPI源JsonTextWriter和JsonTextReader所使用的的WebAPI.
我正在 F# 中创建一个简单的 azure 函数。最后,我将记录类型作为 JSON 返回。我正在做这样的事情:
let y = {Gender = "Woman"; Frequency = 17; Percentage = 100.0}
req.CreateResponse(HttpStatusCode.OK, y);
Run Code Online (Sandbox Code Playgroud)
当我从 Postman 调用函数时,我得到了这个 JSON
{"Gender@":"Woman","Frequency@":17,"Percentage@":100}
看起来这是由默认序列化程序引起的(将F# 记录类型序列化为JSON 包括每个属性后的 '@' 字符)。
然后我尝试使用 Newtonsoft.Json。现在,代码如下所示:
req.CreateResponse(HttpStatusCode.OK, JsonConvert.SerializeObject(y));
Run Code Online (Sandbox Code Playgroud)
但是现在我使用邮递员得到了这个:
"{\"Gender\":\"Woman\",\"Frequency\":17,\"Percentage\":100}"
Run Code Online (Sandbox Code Playgroud)
我想得到这样的回应:
{"Gender":"Woman","Frequency":17,"Percentage":100}
我怎样才能得到这个 JSON 响应?除了指定还有其他方法DataMemberAttribute吗?
谢谢