Ho un tipo F # che deserializzo su un oggetto dal contenuto di una richiesta Web HTTP. L'API che sto chiamando utilizza un protocollo odata e il contenuto di tale richiesta ha il seguente formato con la chiave @odata.context
.Deserializzazione su un tipo F # utilizzando json.net e una proprietà json contenente un simbolo @
{
"@odata.context":"OData",
"Value":"token"
}
Sto usando Json.net per deserializzare il contenuto di nuovo al mio tipo di F #, il tipo di F # è la seguente
type Success = {
[<JsonProperty(PropertyName = "@odata.context")>]
``odata.context``: string;
Value: string; }
odata.context
è sempre null
in questa situazione.
Ho provato sia la seguente (con il simbolo @ in # tipo di nome della proprietà F) e il risultato è NULL
let test1 = JsonConvert.DeserializeObject<Success>("{\"@odata.context\": \"odata.context\", \"Value\": \"token\"}"))
(senza il simbolo @ nel # tipo di nome della proprietà F) questo viene deserializzato correttamente .
let test2 = JsonConvert.DeserializeObject<Success>("{\"odata.context\": \"odata.context\", \"Value\": \"token\"}"))
Credo che questo potrebbe essere a che fare con il simbolo @ nel nome della proprietà.
Qualsiasi idea su una soluzione sarebbe ottima.
Quale versione stai usando? https://dotnetfiddle.net/s6W7yJ –
Sto usando F # 3.0 e json.net 6.0.4 –
Hai guardato le risposte C# qui in SO dal momento che json.net è una versione .net e funzionerà con C#? –