Astuce : Object.ToJson(), string.ToObject()

Par défaut

Pour faire suite à l’article de la semaine dernière sur l’astuce du RandomOrDefault(), voici cette fois des méthodes d’extensions permettant de transformer un objet en notation json et inversement.

Donc, pour cela je vais m’aider de la librairie Json.net et créer une classe statique dans laquelle je vais implémenter mes méthodes d’extension.

using System;
using Newtonsoft.Json.Serialization;

namespace Newtonsoft.Json.Extensions
{
    /// <summary>
    /// Json extensions methods
    /// </summary>
    public static class JsonExtensions
    {
        private static readonly JsonSerializerSettings settings = new JsonSerializerSettings
        {
            ContractResolver = new CamelCasePropertyNamesContractResolver()
        };

        /// <summary>
        /// Serializes obj to json
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ToJson(this object obj)
        {
            return JsonConvert.SerializeObject(obj, settings);
        }

        /// <summary>
        /// Deserializes json value to object of type TResult
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="value"></param>
        /// <returns></returns>
        public static TResult ToObject<TResult>(this string value)
        {
            return JsonConvert.DeserializeObject<TResult>(value, settings);
        }

        public static TResult ToObject<TResult>(this string value, TResult anonymousType)
        {
            return JsonConvert.DeserializeAnonymousType(value, anonymousType);
        }
    }
}

Rien de très compliqué, mais à l’usage, c’est quand même agréable 😉 Voyez plutôt, pour convertir un objet en json, il suffit tout simplement de faire comme cela :

var person = new Person { FirstName = "Sébastien", LastName = "Ferrand" };
var jsonPerson = person.ToJson();

A l’inverse, pour convertir une chaîne json en object, il suffit d’écrire ceci :

var jsonPerson = "{\"firstName\":\"Sébastien\",\"lastName\":\"Ferrand\"}";
var person = jsonPerson.ToObject<Person>();

Voire aussi avec une classe anonyme :

var jsonObject = "{\"property1\":\"value\",\"property2\":\"value\"}";
var anonymousObject = jsonObject.ToObject(new { Property1 = "", Property2 = ""});

Et voilà !

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s