Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Echanges de données au format JSON

0000002691     -      13/06/2017

Mercator est natif de la plateforme .net. Le format d'échange de données naturel dans cet environnement est donc XML. Dans certains cas, et notamment quand il est nécessaire de permettre à des applications de communiquer dans un environnement hétérogène (par ex. web service), le format JSON peut s'avérer très pratique. Ses principaux avantages sont sa syntaxe très simple et sa légèreté en termes de taille des données.

Mercator permet d'utiliser facilement ce format. La classe statique Api de MercatorTunnel.dll contient en effet ces méthodes :

Zoom
public static dynamic JTokenParse(string value)
public static T JsonConvertDeserializeObject<T>(string value)
public static string JsonConvertSerializeObject(object ox)

 

Les deux premières méthodes permettent de transformer une chaîne de caractères JSON, respectivement

  • en un objet dynamique
  • en un objet de type défini et correspondant à la structure JSON.

La troisième méthode fournit une chaîne JSON au départ d'un objet .net.

Le code fourni ci-dessous montre comment consommer un web service qui répond sous la forme d'un message au format JSON. Il peut être testé dans l'éditeur de code, par exemple. Sa seule pertinence est d'illustrer cet article.smiley-wink

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;

namespace MyNameSpace
{
    public class Class1 : MercatorUi.Interfaces.IExec
    {

        public void Main()
        {
            string jsonString = Api.XgetUrl("http://api.icndb.com/jokes/random");
            if (!string.IsNullOrEmpty(jsonString))
            {
                RootObject jsonObject = Api.JsonConvertDeserializeObject<RootObject>(jsonString);
                if (jsonObject.type == "success")
                    Dialogs.Stop(jsonObject.value.joke);
            }
        }
    }

    // classes obtenues via http://json2csharp.com/

    public class Value
    {
        public int id { get; set; }
        public string joke { get; set; }
        public List<string> categories { get; set; }
    }

    public class RootObject
    {
        public string type { get; set; }
        public Value value { get; set; }
    }
}

 

MercatorTunnel.dll implémente en ressources Newtonsoft.Json.dll. Cette dernière ne doit donc pas être référencée.