2013-05-13 10 views
23

私はJson形式のデータベースから出てくる文字列を持っています。newtonsoftまたはrestsharpでjson文字列を逆シリアル化する

私はそれをデシリアライズしようとしています。ただ、生の文字列をデシリアライズするためにRestSharpを使用する方法はあり

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

しかし.Deserialize機能はIRestResponse

を期待?

+0

私はあなたの痛みを感じる – ozzy432836

答えて

23

私もこの問題を抱えており、Newtonsoft.Jsonを使用して解決します。

using Newtonsoft.Json; 
using RestSharp; 

と、このような何かしてみてください:

は、学位論文の名前空間を含めるresponse.Content

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

を、あなたは生の結果を持っているので、ちょうどJSONオブジェクトにこの文字列をデシリアライズします。ケース内のTは、逆シリアル化する必要があるタイプです。サンプルについて:

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

RestSharpシリアライザとデシリアライザが問題でした。ニュートンソフトを使用することで問題は解決しました。 –

+1

@ BahaiResearch.com RestSharpのシリアライザ/デシリアライザにはそれ自体が問題があります。 RestSharpは一般的なシリアル化ツールではなく、httpクライアントライブラリであるため、必要な機能はありません。あなたが指摘したように、IRestResponse.Content(文字列型)をサポートするのとは対照的に、 'IRestResponse'が必要です。以下のStevieJ81は、何らかの理由でJsonの逆シリアル化にRestSharpを使用したい、または使用する必要がある場合、潜在的な回避策を指摘します。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

素晴らしい作品です。私のアプリケーションに含める必要のあるライブラリが1つ少なくなりました。 –

+0

非常に良い、使用する必要はありませんNewtonsoft.Json – Dennis

関連する問題