相关疑难解决方法(0)

将F#记录类型序列化为JSON在每个属性后包含"@"字符

DataContractJsonSerializer为F#记录类型创建JSON,其中包含每个属性名称后面的"@"字符.有没有人知道是否有可能获得没有这个尾随符号的JSON?

{"heart_rate@":20,"latitude@":45.0,"longitude@":108.0,"name@":"Rambo"}
Run Code Online (Sandbox Code Playgroud)

这是我用来输出此示例的脚本

#r "System.Xml"
#r "System.Runtime.Serialization"

open System.Text
open System.Runtime.Serialization.Json
open System.IO

type Update = {
    name: string;
    latitude: decimal;
    longitude: decimal;
    heart_rate: int}

let update = {name = "Rambo"; latitude = 45.0m; longitude = 108.0m; heart_rate = 20}

let serializer = new DataContractJsonSerializer( typeof<Update> )

let stream = new MemoryStream()
let data = serializer.WriteObject(stream, update)
let updateData = stream.ToArray()

let json = (Encoding.UTF8.GetString(updateData))

printfn "%s" json
Run Code Online (Sandbox Code Playgroud)

f# json

14
推荐指数
2
解决办法
1912
查看次数

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)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试通过用C#编写的ASP.NET WebApi 5.0服务公开我的F#类型时,序列化的JSON包含所有属性的@ -sign infront.@ -sign来自记录类型的内部支持字段(这曾经是Json.Net和F#的已知问题).

但是 - 因为我使用的是Json.NET的更新版本,结果应该与调用JsonConvert时的结果相同吗?或者JsonConvert表现得JsonTextWriterJsonTextReader?不同?

据我从读讲JsonMediaTypeFormatter在的WebAPI源JsonTextWriterJsonTextReader所使用的的WebAPI.

serialization f# json.net asp.net-web-api

14
推荐指数
2
解决办法
1904
查看次数

标签 统计

f# ×2

asp.net-web-api ×1

json ×1

json.net ×1

serialization ×1