vga*_*tes 5 f# json azure azure-functions
我正在 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
吗?
谢谢
我不认为你可以使用 JSON.Net (会很好),因为 AzureFunctions 基础设施似乎是数据合约序列化器
我刚刚按照将 F# 记录类型序列化为 JSON 在每个属性后包含“@”字符实现了修复,如果比您希望的有点笨拙,它对我有用。
我也在努力解决这个问题,你让我朝着正确的方向前进 - 谢谢
#r "System.Runtime.Serialization"
open System.Runtime.Serialization
[<DataContract>]
type SearchItem = {
[<field: DataMember(Name="Gender")>]
Gender: string
[<field: DataMember(Name="Frequency")>]
Frequency: int
[<field: DataMember(Name="Percentage")>]
Percentage: float
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
407 次 |
最近记录: |