46

我有一个来自 Json 格式的数据库的字符串。

我试图反序列化它:

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

但是该.Deserialize函数需要一个IRestResponse

有没有办法使用 RestSharp 来反序列化原始字符串?

4

2 回答 2

62

有几种方法可以做到这一点。一个非常流行的处理 json 的库是Newtonsoft.Json. 可能您已经在您的 asp.net 项目中拥有它,但如果没有,您可以从nuget.

考虑到您有一个响应对象,请包含以下命名空间并DeserializeObject<T>JsonConvert类中调用静态方法:

using Newtonsoft.Json;
using RestSharp;
return JsonConvert.DeserializeObject<T>(response.Content);

在 上response.Content,您将获得原始结果,因此只需将此字符串反序列化为 json 对象。Tin case 是您需要反序列化的类型。

例如:

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

更新

最近,微软System.Text.Json在 .Net 平台上增加了一个处理 json 格式的命名空间。您可以使用它调用JsonSerializer.Deserialize<T>静态方法:

using System.Text.Json;
var customer = JsonSerializer.Deserialize<Customer>(jsonContent);
于 2013-05-13T20:04:54.373 回答
57

如果你想避免使用额外的库,试试这个:

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

response.Content = myStringFromDB; 

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

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

警告适用 - 未经广泛测试 - 但似乎工作得很好。

于 2013-08-08T02:37:58.280 回答