2013-05-13 7 views
23

У меня есть строка, которая выходит из базы данных, которая находится в формате Json.Deserializing json string с newtonsoft или restsharp

Я попытался десериализации его:

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

Но функция .Deserialize ожидает IRestResponse

Есть ли способ использовать RestSharp только десериализации сырые строки?

+0

Я чувствую вашу боль – ozzy432836

ответ

23

У меня также есть эта проблема, и я решаю ее, используя Newtonsoft.Json.

Включить тезисы пространств имен:

using Newtonsoft.Json; 
using RestSharp; 

и попробовать что-то вроде этого:

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

На response.Content, вы будете иметь необработанный результат, так что просто десериализации эту строку в объект JSON. T в этом случае - тип, необходимый для десериализации. Для образца:

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

Проблема была связана с сериализатором и десериализатором RestSharp. С помощью Newton soft проблема исчезла. –

+1

@ BahaiResearch.com Это не значит, что сериализатор/десериализатор RestSharp имеет/сам по себе; он просто не имеет необходимых функций, так как RestSharp является клиентской библиотекой HTTP, а не общим инструментом сериализации. Как вы указали, для этого требуется «IRestResponse», а не поддержка IRestResponse.Content (тип строки). StevieJ81 ниже указывает на способ обхода пути, если по какой-то причине вы хотите или должны использовать RestSharp для десериализации json: он напрямую подключает IRestResponse.Content. – Matt

25

Если вы хотите, чтобы избежать использования дополнительных библиотек, попробуйте следующее:

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

response.Content = myStringFromDB; 

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

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

Предостережения применять - не тщательно протестированы, - но, кажется, работает достаточно хорошо.

+0

Отлично работает. Еще одна библиотека, которую я должен включить в свое приложение. –

+0

очень хорошо, не нужно использовать Newtonsoft.Json – Dennis

Смежные вопросы