Search code examples
c#jsonrestasp.net-web-apirestsharp

Deserializing a json string with restsharp


I have a string that comes out of a database which is in Json format.

I have tried to deserialize it with:

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

But the .Deserialize function expects an IRestResponse

Is there a way to use RestSharp to just deserialize raw strings?


Solution

  • There are sereval ways to do this. A very popular library to handle json is the Newtonsoft.Json. Probably you already have it on your asp.net project but if not, you could add it from nuget.

    Considering you have a response object, include the following namespaces and call the static method DeserializeObject<T> from JsonConvert class:

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

    On the response.Content, you will have the raw result, so just deserialize this string to a json object. The T in the case is the type you need to deserialize.

    For example:

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

    Update

    Recently, Microsoft has added a namespace System.Text.Json which handle json format on the .Net platform. You could use it calling the JsonSerializer.Deserialize<T> static method:

    using System.Text.Json;
    
    var customer = JsonSerializer.Deserialize<Customer>(jsonContent);