JSON

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilisation de la RTL dans les applications multi-périphériques


JSON (EN) (JavaScript Object Notation) est un format léger d'échange de données indépendant du langage. JSON peut être utilisé comme une alternative aux autres formats d'échange de données tels que XML ou YAML.

RAD Studio fournit des frameworks JSON qui contiennent des classes et des méthodes pour stocker, analyser, lire, écrire et générer des données au format JSON.

Frameworks JSON

RAD Studio fournit différents frameworks pour la gestion des données JSON.

  • Framework d'objets JSON : ce framework crée des objets temporaires pour les opérations de lecture et d'écriture relatives aux données JSON.

Framework d'objets JSON

Le framework d'objets JSON requiert de créer un objet temporaire pour analyser ou générer des données JSON. Pour lire ou écrire des données JSON, vous devez créer un objet mémoire intermédiaire tel que TJSONObject, TJSONArray ou TJSONString avant de lire et d'écrire les données JSON.

Pour de plus amples informations sur ce framework, voir Framework d'objets JSON.

Framework de lecteurs et d'éditeurs JSON

Le framework de lecteurs et d'éditeurs JSON vous permet de lire et d'écrire des données JSON directement dans un flux, sans créer d'objet temporaire. Dans la mesure où vous n'avez pas besoin de créer d'objet temporaire pour les opérations de lecture et d'écriture JSON, ce framework présente de meilleures performances et améliore l'utilisation de la mémoire.

A la différence du framework d'objets JSON, le framework de lecteurs et d'éditeurs JSON fournit une prise en charge du format BSON.

Pour de plus amples informations sur ce framework, voir Framework de lecteurs et d'éditeurs JSON.

Différences relatives au framework JSON

Vous pouvez utiliser l'un ou l'autre des deux frameworks lorsque vous travaillez avec des données JSON. Vous opterez pour l'un ou l'autre selon les besoins de votre projet. Le tableau ci-dessous présente les principales différences entre les deux frameworks JSON.

Framework d'objets JSON
  • Méthode la plus facile pour lire une structure JSON ; il autorise les itérations et les modifications dans l'arborescence de modèle.
Framework de lecteurs et d'éditeurs JSON
  • Effectue les opérations de lecture et d'écriture JSON dans un flux de façon séquentielle, ce qui a pour effet de réduire la consommation de mémoire.
  • Prise en charge BSON.
  • Extensible.

Le tableau ci-dessous comporte trois extraits de code qui illustrent les différences entre les frameworks pour les opérations d'écriture JSON.

Framework d'objets JSON Framework de lecteurs et d'éditeurs JSON : TJSonWriter Framework de lecteurs et d'éditeurs JSON : TJSONObjectBuilder
JSONColor := TJSONObject.Create;
JSONColor.AddPair('name', 'red');
JSONColor.AddPair('hex', '#f00');
JSONArray := TJSONArray.Create;
JSONArray.Add(JSONColor);
JSONObject := TJSONObject.Create;
JSONObject.AddPair('colors', JSONArray);
Writer.WriteStartObject;
Writer.WritePropertyName('colors');
Writer.WriteStartArray;
Writer.WriteStartObject;
Writer.WritePropertyName('name');
Writer.WriteValue('red');
Writer.WritePropertyName('hex');
Writer.WriteValue('#f00');
Writer.WriteEndObject;
Writer.WriteEndArray;
Writer.WriteEndObject;
Builder := TJSONObjectBuilder.Create(Writer);
  Builder
    .BeginObject
      .BeginArray('colors')
        .BeginObject
          .Add('name', 'red')
          .Add('hex', '#f00')
        .EndObject
    .EndArray
  .EndObject;

Les trois extraits de code du tableau ci-dessus écrivent le code JSON suivant :

{
   "colors":[
      {
         "name":"red",
         "hex":"#f00"
      }
   ]
}


Le tableau ci-dessous comporte trois extraits de code qui illustrent les différences entre les frameworks pour les opérations de lecture JSON.

Framework d'objets JSON Framework de lecteurs et d'éditeurs JSON : TJSonReader Framework de lecteurs et d'éditeurs JSON : TJSONIterator
JSONValue := TJSONObject.ParseJSONValue('{"colors":[{"name":"red", "hex":"#f00"}]}');

Memo1.Lines.Add('READER:');
if JSONValue is TJSONArray then
  //... 
else if JSONVAlue is TJSONObject then
  Memo1.Lines.Add('colors');
  Memo1.Lines.Add('name: '+ JSONValue.GetValue<string>('colors[0].name'));
  Memo1.Lines.Add('hex: '+ JSONValue.GetValue<string>('colors[0].hex'));
LStringReader := TStringReader.Create('{"colors":[{"name":"red", "hex":"#f00"}]}');
LJsonTextReader := TJsonTextReader.Create(LStringReader);

while LJsonTextReader.read do
  case LJsonTextReader.TokenType of
    TJsonToken.PropertyName:
    Memo1.Lines.Add(LJsonTextReader.Value.AsString);
	TJsonToken.String:
    Memo1.Lines[Memo1.Lines.Count-1] := Memo1.Lines[Memo1.Lines.Count-1] + ': ' +LJsonTextReader.Value.AsString;
  end;
LStringReader := TStringReader.Create('{"colors":[{"name":"red", "hex":"#f00"}]}');
LJsonTextReader := TJsonTextReader.Create(LStringReader);
LIterator := TJSONIterator.Create(LJsonTextReader);

LIterator.Recurse;
LIterator.Next;
Memo1.Lines.Add(LIterator.Key);
LIterator.Recurse;
LIterator.Recurse;
LIterator.Next;
LIterator.Recurse;
LIterator.Next;
Memo1.Lines.Add(LIterator.Key +': '+ LIterator.AsString);
LIterator.Next;
Memo1.Lines.Add(LIterator.Key +': '+ LIterator.AsString);

Les trois extraits de code du tableau ci-dessus ajoutent ce qui suit à un TMemo.

colors
name: red
hex: #f00

Rubriques sur JSON

  • Frameworks JSON :

Voir aussi

Exemples de code