我有一个来自 Json 格式的数据库的字符串。
我试图反序列化它:
RestSharp.Deserializers.JsonDeserializer deserial = new JsonDeserializer();
var x = deserial .Deserialize<Customer>(myStringFromDB)
但是该.Deserialize
函数需要一个IRestResponse
有没有办法使用 RestSharp 来反序列化原始字符串?
我有一个来自 Json 格式的数据库的字符串。
我试图反序列化它:
RestSharp.Deserializers.JsonDeserializer deserial = new JsonDeserializer();
var x = deserial .Deserialize<Customer>(myStringFromDB)
但是该.Deserialize
函数需要一个IRestResponse
有没有办法使用 RestSharp 来反序列化原始字符串?
有几种方法可以做到这一点。一个非常流行的处理 json 的库是Newtonsoft.Json
. 可能您已经在您的 asp.net 项目中拥有它,但如果没有,您可以从nuget
.
考虑到您有一个响应对象,请包含以下命名空间并DeserializeObject<T>
从JsonConvert
类中调用静态方法:
using Newtonsoft.Json;
using RestSharp;
return JsonConvert.DeserializeObject<T>(response.Content);
在 上response.Content
,您将获得原始结果,因此只需将此字符串反序列化为 json 对象。T
in 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);
如果你想避免使用额外的库,试试这个:
RestSharp.RestResponse response = new RestSharp.RestResponse();
response.Content = myStringFromDB;
RestSharp.Deserializers.JsonDeserializer deserial = new JsonDeserializer();
Customer x = deserial.Deserialize<Customer>(response);
警告适用 - 未经广泛测试 - 但似乎工作得很好。