Tag Archives: json

Utiliser les REST API JSON avec cURL

cURL with REST JSON

De plus en plus de sites vous permettent d’utiliser des API pour mettre à jour des valeurs ou bien pour ajouter de nouvelles fonctionnalités.

L’utilisation de ces API est intéressante car elle permet de développer toutes sortes d’applications (mobile, tablette, desktop) pour interagir avec un site qui ne vous appartient pas et sur lequel vous n’avez pas full Control.

Le protocole le plus fréquemment utilisé est REST, qui est basé sur un échange de données et de requêtage au format JSON.

Le REST est simple à comprendre car il ne dispose que de 4 commandes: GET, POST, PUT et DELETE.

[Json.Net / Newtonsoft.Json] Sérialiser les propriétés en minuscule

json dotnet

Newtonsoft.Json est une librairie gratuite (également nommée Json.Net) qui permet entre autre de générer du JSON, de lire du JSON et de sérialiser des objets .net en Json.

Cette librairie est une merveille car elle vous simplifiera énormément la vie, d’autant plus qu’aujourd’hui avec les phablets, les smartphones et le Web “2.0” (et supérieur), le json est devenu le format d’échange de données entre moteur et interfaces graphiques.

Elle est complètement gratuite et disponible en téléchargement sur le site de CodePlex.

Voici une astuce qui vous permettra de sérialiser vos propriétés en forçant la mise en minuscule (lowercase).

[.Net] JSonSerializer, classe pour sérialiser vos objets

json-serializer

Voila une classe dotnet bien pratique qui permet de sérialiser des objets en json.

Imports System.IO
Imports System.Text
Imports System.Runtime.Serialization

Public Class JSONSerializer
    Public Shared Function Serialize(ByVal BaseType As Object) As String
        Dim ExactName As String = BaseType.GetType.ToString
        Dim Ser As String = p_Serialize(BaseType)
        Dim oList As New List(Of String)
        oList.Add(ExactName)
        oList.Add(Ser)
        Return p_Serialize(oList)
    End Function
    Public Shared Function Deserialize(ByVal s As String) As Object
        Dim oList As New List(Of String)
        oList = DirectCast(p_Deserialize(s, oList), List(Of String))
        Dim Instance As Object = Nothing
        Instance = Activator.CreateInstance(Type.GetType(oList.Item(0)))
        Return p_Deserialize(oList.Item(1), Instance)
    End Function

    Private Shared Function GetStringFromMemoryStream(ByVal m As MemoryStream) As String
        If (m Is Nothing) Or m.Length = 0 Then
            Return ""
        End If
        m.Flush()
        m.Position = 0
        Dim UTF8 As Encoding = UTF8Encoding.UTF8
        Dim sr As New StreamReader(m, UTF8Encoding.UTF8)
        Dim s As String = sr.ReadToEnd()
        Return s
    End Function
    Private Shared Function GetMemoryStreamFromString(ByVal s As String) As MemoryStream
        If (s Is Nothing) OrElse s.Length = 0 Then
            Return Nothing
        End If
        Dim a() As Byte = System.Text.Encoding.UTF8.GetBytes(s)
        Dim m As New System.IO.MemoryStream(a, True)
        m.Position = 0
        Return m
    End Function
    Private Shared Function p_Serialize(ByVal BaseType As Object) As String
        If BaseType Is Nothing Then
            Throw New ArgumentNullException()
        End If
        Dim dcs As New DataContractSerializer(BaseType.[GetType]())
        Dim ms As New MemoryStream()
        dcs.WriteObject(ms, BaseType)

        Return Encoding.UTF8.GetString(ms.GetBuffer(), 0, CInt(ms.Position))
    End Function
    Private Shared Function p_Deserialize(ByVal s As String, ByVal BaseType As Object) As Object
        Dim dcs As New DataContractSerializer(BaseType.GetType())
        Dim m As MemoryStream = GetMemoryStreamFromString(s)
        If m IsNot Nothing Then
            BaseType = dcs.ReadObject(m)
        End If
        Return BaseType
    End Function
End Class

Compresser facilement du JSON en PHP

compression_json

Aujourd'hui j'ai été amené à compresser du JSON en PHP afin de gagner de la bande passante sur mon serveur Web.

Pour cela, il suffit d'ajouter une compression GZIP dans votre code PHP afin de compresser automatiquement votre JSON.

Voici le code, vous verrez c'est tout simple:

//On recupere les données
$data = get_data();

//On active le buffer de sortie via gzhandler
ob_start('ob_gzhandler');

//On envoie le résultat normalement
echo json_encode($data);

Sans compression GZIP j'avais le header HTTP suivant:

Content-Length    500800
Content-Type      application/json

Et avec la compression j'obtiens cela:

Content-Encoding  gzip
Vary              Accept-Encoding
Content-Length    15922
Content-Type      application/json

C'est donc super performant, d'autant plus que la majorité des navigateurs supporte la compression GZIP nativement :)