我有一个 F# 类型,我从 HTTP web 请求的内容中反序列化成一个对象。我调用的 API 使用 odata 协议,该请求的内容具有以下格式,并包含关键字 @odata.context
。
{
"@odata.context":"OData",
"Value":"token"
}
我正在使用Json.net将内容反序列化为我的F#类型,F#类型如下所示。
type Success = {
[<JsonProperty(PropertyName = "@odata.context")>]
``odata.context``: string;
Value: string; }
odata.context
在这种情况下始终为 null
。
我尝试了以下两种方法(在 F# 类型属性名称中使用 @ 符号),结果为 NULL。
let test1 = JsonConvert.DeserializeObject<Success>("{\"@odata.context\": \"odata.context\", \"Value\": \"token\"}"))
(在F#类型属性名称中不需要@符号)这样可以正确地反序列化。
let test2 = JsonConvert.DeserializeObject<Success>("{\"odata.context\": \"odata.context\", \"Value\": \"token\"}"))
我认为这可能与属性名中的@符号有关。如果您有任何解决方案,请告诉我。
Newtonsoft.Json.8.0.2
- 这个版本的 json.net 可以让你正确地反序列化对象。 我最初尝试了版本6.0.4
,遇到了和你一样的问题。 - Marta