JSON support in Delphi2010, a simple example

During last ITDevCon in Verona (ITALY) I talked in a session with title “Marshal and UnMarshal in Delphi 2010″ (we have published some photos about this great conference here).
In the first part of the session I’ve talked about JSON and many attendees were very interested in JSON and his application in everyday programming. I’m a real JSON fan so I decided to write this post about JSON support in Delphi2010. In my session I talked about serialization and deserialization, in this post I’ll show an example of code to do some JSON generation.

program JsonTypes;
{$APPTYPE CONSOLE}
uses
  SysUtils,
  IOUtils,
  DBXJSON;
var
  Obj, RestoredObject, JSON: TJSONObject;
  arr: TJSONArray;
begin
  json := TJSONObject.Create;
  try
    WriteLn('Empty JSON Object: ' + sLineBreak,json.ToString);
    json.AddPair('FirstName', TJSONString.Create('Daniele'));
    WriteLn('Simple JSON Object with property: ' + sLineBreak, json.ToString);
    json.AddPair(TJSONPair.Create('LastName', 'Teti'));
    WriteLn('Simple JSON Object with 2 property: ' + sLineBreak, json.ToString);
    arr := TJSONArray.Create;
    arr.Add(9871238712);
    arr.Add('peter.parker@bittime.it');
    arr.Add('Via Roma, 12');
    json.AddPair(TJSONPair.Create('Contacts', arr));
    WriteLn('JSON Object with a property array: ' + sLineBreak, json.ToString);
    obj := TJSONObject.Create;
    obj.AddPair(TJSONPair.Create('John','Doe'));
    json.AddPair('MyUndefinedPersonObject', obj);
    WriteLn('JSON Object with a nested Object: ' + sLineBreak,json.ToString);
    Write('Writing JSON object to file [jsonfile]...');
    TFile.WriteAllText('jsonfile',json.ToString);
    WriteLn('DONE!');
    RestoredObject := TJSONObject.ParseJSONValue(
      TEncoding.ASCII.GetBytes(TFile.ReadAllText('jsonfile')),0
      ) as TJSONObject;
    WriteLn('Readed JSON object from file: ' + sLineBreak, RestoredObject.ToString);
  finally
    json.Free;  //Every contained object is automatically freed
  end;
  readln; //If you want to see the output while in Delphi IDE
end.

JSON is a lightweight data-interchange format and in Delphi 2010 you have full support for it with the built-in DBXJSON unit.
Enjoy!

Si è conclusa ITDevCon 2009 [ITALIAN]

Giovedì scorso si è conclusa la prima edizione di ITDevCon, la conferenza europea dedicata interamente a Delphi e alle tecnologie e metodologie ad esso collegate.
Aver partecipato alla sua organizzazione selezionando i contenuti tecnici è stato molto impegnativo, ma visto il successo, altrettanto gratificante.
Ringrazio gli speaker che hanno proposto topic ad alto contenuto informativo e tecnico nonostante alcuni argomeni affrontati richiedessero, probabilmente, più tempo di quello a disposizione (le sessioni sono durate 55 minuti).

Alcuni degli speaker che hanno partecipato, hanno già scritto sui propri blog le loro impressioni.

Pavel Glowacki, che è stato uno degli speaker con più talk, ha pubblicato un meticoloso e lusinghiero resoconto riguardante i 2 giorni di conferenza.

L’ottimo Marco Cantù, con le sue 6 sessioni, come al solito ha contribuito a mantenere molto alto il contenuto tecnico e informativo di ITDevCon.

L’instancabile Boian Mitov, un nome conosciuto ai più per le sue ottime suite di componenti, è stato una delle piacevoli New Entry nell’ecosistema degli eventi “Live” relativi a Delphi. Ha tenuto ben 5 sessioni. Scrivendo della conferenza, sembra avere apprezzato anche la pizza e il vino italiano, concordo pienamente Boian! 🙂

Daniel Magin, infine, ha “improvvisato” una sessione riguardo allo sviluppo per iPhone.

In conclusione, ringrazio tutti gli speaker che hanno partecipato e hanno contribuito alla riuscita dell’evento.
Abbiamo fortemente voluto che questa conferenza fosse anche un momento di confronto, formazione e uno sguardo verso il mondo “Non Delphi” con l’obbiettivo di migliorare il “Mondo Delphi”.
E i primi feedback sono stati incoraggianti.

Ecco alcuni link ai blog degli speaker che hanno parlato di ITDevCon.

Pawel Glowacki
http://blogs.embarcadero.com/pawelglowacki/2009/11/12/38831
http://blogs.embarcadero.com/pawelglowacki/2009/11/11/38811

Boian Mitov
http://labpacks.blogspot.com/

Marco Cantù
http://blog.marcocantu.com/blog/itdevcon_2009_report.html

Johan Aludden
http://johanaludden.com/weblog/2009/11/12/itdevcon/

Grazie di cuore a tutti, ci vediamo l’anno prossimo!