JSON support in Delphi2010, a simple example

Posted on mer 25 novembre 2009 in ITDevCon

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.

{lang="delphi"} 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!