Zig Requires Chilkat v11.0.0+
Zig
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
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});
}