Sample code for 30+ languages & platforms
Delphi ActiveX Requires Chilkat v11.0.0+

HTTP POST JSON and Parse JSON Response

See more HTTP Examples

Demonstrates how to send a JSON POST and then parse the JSON response.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
var
success: Integer;
json: TChilkatJsonObject;
http: TChilkatHttp;
resp: TChilkatHttpResponse;
jsonResp: TChilkatJsonObject;
lifeAmount: WideString;
lifeResidualAmount: WideString;

begin
success := 0;

//  This example assumes the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

json := TChilkatJsonObject.Create(Self);

success := json.LoadFile('qa_data/json/jsonBodyForHttpPost.json');
if (success = 0) then
  begin
    Memo1.Lines.Add(json.LastErrorText);
    Exit;
  end;

http := TChilkatHttp.Create(Self);

resp := TChilkatHttpResponse.Create(Self);
success := http.HttpJson('POST','https://test.something.com/XYZ/API/v1/CreditInsuranceCalculator/CalculatePremiums',json.ControlInterface,'application/json',resp.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(http.LastErrorText);
    Exit;
  end;

jsonResp := TChilkatJsonObject.Create(Self);
jsonResp.Load(resp.BodyStr);

jsonResp.EmitCompact := 0;
Memo1.Lines.Add(jsonResp.Emit());

//  The JSON response to be parsed looks like this:
//  {
//    "LifeAmount": 513.85,
//    "LifeResidualAmount": 123.38,
//    "CriticalIllnessAmount": 0,
//    "CriticalIllnessResidualAmount": 0,
//    "DisabilityAmount": 881.70,
//    "PolicyFee": 0.00,
//    "PolicyFeeSecondary": 0,
//    "PolicyFeeHidden": 50.00,
//    "PolicyFeeHiddenSecondary": 0
//  }

//  We can get the floating point numbers as strings.  Then convert to double
//  using the appropriate string-to-double conversion for your programming language.
//  For example, in C++ use atof.  In C# use Convert.ToDouble.  
lifeAmount := jsonResp.StringOf('LifeAmount');
lifeResidualAmount := jsonResp.StringOf('LifeResidualAmount');

Memo1.Lines.Add('LifeAmount = ' + lifeAmount);
Memo1.Lines.Add('LifeResidualAmount = ' + lifeResidualAmount);