2013-05-13 19 views
23

Mam ciąg znaków, który pochodzi z bazy danych w formacie Json.Deserializowanie łańcucha json z newtonsoft lub restsharp

Próbowałem deserializowania go:

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

ale funkcja .Deserialize oczekuje IRestResponse

Czy istnieje sposób na wykorzystanie RestSharp tylko deserializowania surowe sznurki?

+0

Czuję twój ból – ozzy432836

Odpowiedz

23

Też mam ten problem i rozwiązuję go za pomocą Newtonsoft.Json.

Dołącz tezy nazw:

using Newtonsoft.Json; 
using RestSharp; 

i spróbować czegoś takiego:

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

Na response.Content, trzeba będzie surowy wynik, więc po prostu deserializowania ten ciąg do obiektu JSON. Numer T w tej skrzynce to typ, którego należy deserializować. Dla próbki:

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

Serializator i deserializer RestSharp był problemem. Przy użyciu Newtona soft problem zniknął. –

+1

@ BahaiResearch.com Nie chodzi o to, że serializer/deserializer RestSharp ma/jest problemem per se; po prostu nie ma potrzebnej funkcjonalności, ponieważ RestSharp jest biblioteką klienta http, a nie ogólnym narzędziem do serializacji. Jak zauważyłeś, wymaga 'IRestResponse', w przeciwieństwie do, powiedzmy, obsługiwania IRestResponse.Content (typ łańcucha). StevieJ81 poniżej wskazuje potencjalny sposób obejścia, jeśli z jakiegoś powodu chcesz lub musisz użyć RestSharp do deserializacji json: bezpośrednio podłącza IRestResponse.Content. – Matt

25

Jeśli chcesz uniknąć używania dodatkowych bibliotek, spróbuj to: zastosowanie

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

response.Content = myStringFromDB; 

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

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

Ostrzeżenia - nie przetestowane - ale wydaje się działać dobrze.

+0

Działa świetnie. Jedna mniejsza biblioteka, którą muszę uwzględnić w mojej aplikacji. –

+0

bardzo dobrze, nie trzeba używać Newtonsoft.Json – Dennis

Powiązane problemy