Mam typ F #, który deserializuję do obiektu z treści żądania HTTP HTTP. Interfejs API, do którego dzwonię, używa protokołu ODATA, a treść tego żądania ma następujący format zawierający klucz @odata.context
.Deserializowanie do typu F # za pomocą json.net i właściwości json zawierającej symbol @
{
"@odata.context":"OData",
"Value":"token"
}
Używam Json.NET deserializacji zawartość z powrotem do mojego F # typu F # typu jest następująca
type Success = {
[<JsonProperty(PropertyName = "@odata.context")>]
``odata.context``: string;
Value: string; }
odata.context
jest zawsze null
w tej sytuacji.
Próbowałem oba następujące (z symbolem @ w F # typu nazwy właściwości), a wynik jest NULL
let test1 = JsonConvert.DeserializeObject<Success>("{\"@odata.context\": \"odata.context\", \"Value\": \"token\"}"))
(bez symbolu @ w F # typu nazwy właściwości) Ten dostaje rozszeregować poprawnie .
let test2 = JsonConvert.DeserializeObject<Success>("{\"odata.context\": \"odata.context\", \"Value\": \"token\"}"))
Wierzę, że może to mieć związek z symbolem @ w nazwie nieruchomości.
Wszelkie pomysły na rozwiązanie byłoby świetne.
Co wersji używasz? https://dotnetfiddle.net/s6W7yJ –
Używam F # 3.0 i json.net 6.0.4 –
Czy spojrzałeś na odpowiedzi C# tutaj w SO, ponieważ json.net jest wersją .net i będzie działać z C#? –