2013-05-13 3 views
23

Ho una stringa che esce da un database che è in formato Json.Deserializzazione di una stringa json con newtonsoft o restsharp

ho cercato di deserializzare con:

RestSharp.Deserializers.JsonDeserializer deserial = new JsonDeserializer(); 
var x = deserial .Deserialize<Customer>(myStringFromDB) 

Ma la funzione .Deserialize si aspetta un IRestResponse

C'è un modo per utilizzare RestSharp deserializzare solo stringhe raw?

+0

Mi sento il tuo dolore – ozzy432836

risposta

23

Ho anche questo problema e lo risolvo utilizzando Newtonsoft.Json.

Includere tesi spazi dei nomi:

using Newtonsoft.Json; 
using RestSharp; 

e provare qualcosa di simile:

return JsonConvert.DeserializeObject<T>(response.Content); 

Sul response.Content, si avrà il risultato grezzo, quindi basta deserializzare questa stringa in un oggetto JSON. Lo T nel caso è il tipo da deserializzare. Per esempio:

var customerDto = JsonConvert.DeserializeObject<CustomerDto>(response.Content); 
+3

Il serializzatore e deserializzatore RestSharp era il problema. Usando Newton soft il problema è andato via. –

+1

@ BahaiResearch.com Non è che il serializzatore/deserializzatore di RestSharp abbia/sia un problema di per sé; semplicemente non ha la funzionalità di cui hai bisogno, dal momento che RestSharp è una libreria client http non uno strumento di serializzazione generale. Come hai sottolineato, richiede un 'IRestResponse', al contrario, supponiamo che supporti anche un IRestResponse.Content (tipo di stringa). StevieJ81 di seguito indica un modo potenziale di soluzione alternativa se per qualche motivo si desidera o deve utilizzare RestSharp per la deserializzazione di JSON: inserisce direttamente IRestResponse.Content. – Matt

25

Se si vuole evitare di utilizzare librerie extra, provate questo: si applicano

RestSharp.RestResponse response = new RestSharp.RestResponse(); 

response.Content = myStringFromDB; 

RestSharp.Deserializers.JsonDeserializer deserial = new JsonDeserializer(); 

Customer x = deserial.Deserialize<Customer>(response); 

Avvertenze - non ampiamente testati - ma sembra funzionare abbastanza bene.

+0

Funziona alla grande. Una libreria in meno che devo includere nella mia domanda. –

+0

molto buono, non è necessario utilizzare Newtonsoft.Json – Dennis