Sample code for 30+ languages & platforms
Lazarus Pascal

JSON Escape and Unescape a String

Demonstrates how to JSON escape or unescape a string.

Chilkat Lazarus Pascal Downloads

Lazarus Pascal
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.StringBuilder;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  sb: TStringBuilder;

begin
  sb := TStringBuilder.Create;

  sb.Append('backslash: \\\\, A: \\u0041');
  WriteLn(sb.GetAsString());

  //  The output is:
  //     backslash: \\, A: \u0041

  //  The keyword "json" can be used
  //  to escape and unescape.  To escape is to encode.  To unescape is to decode.

  //  Unescape (decode) the string in sb.
  sb.Decode('json','utf-8');
  WriteLn(sb.GetAsString());

  //  After JSON unescaping:
  //     backslash: \, A: A

  //  Now JSON escape the string.
  sb.Encode('json','utf-8');
  WriteLn(sb.GetAsString());

  //  After JSON escaping:
  //     backslash: \\, A: A

  //  Note: The "A" is not escaped to "\u0041" because there is no need.
  //  The "\uXXXX" format would be produced for non-printable control chars.


  sb.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.