Mercator is een inwoner van het .NET-platform. De natuurlijke gegevensuitwisseling in deze omgeving is XML. In sommige gevallen, bijvoorbeeld wanneer het nodig is om te communiceren met toepassingen in een heterogene omgeving (bijvoorbeeld een webservice), kan het erg handig zijn om in JSON-formaat JSON te communiceren. De voornaamste voordelen zijn de eenvoudige syntax en de lichtheid in termen van gegevensgrootte.
Mercator Mercator biedt een eenvoudig gebruikt van dit formaat. De statische Api-klasse van MercatorTunnel.dll bevat volgende methodes:
public static dynamic JTokenParse(string value)
public static T JsonConvertDeserializeObject<T>(string value)
public static string JsonConvertSerializeObject(object ox)
De eerste twee methoden kunnen een een JSON string transformeren:
- Een dynamisch object
- een object dat overeenkomt met de JSON-structuur.
De derde methode levert een JSON string vertrekkende vanuit een .NET-object.
De code hieronder toont u hoe u een webservice consumeert die antwoord met een bericht in JSON-formaat. Het kan bijvoorbeeld worden getest in de code-editor. Dit is enkel relevant om dit artikel te illustreren.
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);
}
}
}
// Klassen verkregen 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 implementeert de bron Newtonsoft.Json.dll. Naar de laatste dll moet niet verwezen worden..