Sample code for 30+ languages & platforms
Zig 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 Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

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

    const json = try chilkat.JsonObject.init();
    defer json.deinit();

    json.loadFile("qa_data/json/jsonBodyForHttpPost.json") catch {
        std.debug.print("{s}\n", .{try json.getLastErrorText(alloc)});
        return;
    };

    const http = try chilkat.Http.init();
    defer http.deinit();

    const resp = try chilkat.HttpResponse.init();
    defer resp.deinit();
    http.httpJson("POST", "https://test.something.com/XYZ/API/v1/CreditInsuranceCalculator/CalculatePremiums", json, "application/json", resp) catch {
        std.debug.print("{s}\n", .{try http.getLastErrorText(alloc)});
        return;
    };

    const json_resp = try chilkat.JsonObject.init();
    defer json_resp.deinit();
    json_resp.load(try resp.getBodyStr(alloc)) catch {};

    json_resp.setEmitCompact(false);
    std.debug.print("{s}\n", .{try json_resp.emit(alloc)});

    // 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.
    const life_amount = try json_resp.stringOf(alloc, "LifeAmount");
    const life_residual_amount = try json_resp.stringOf(alloc, "LifeResidualAmount");

    std.debug.print("LifeAmount = {s}\n", .{life_amount});
    std.debug.print("LifeResidualAmount = {s}\n", .{life_residual_amount});
}