SQL Server
SQL Server
ITIDA Create Canonical JSON
See more Egypt ITIDA Examples
Demonstrates creating the canonical (ITIDA) version of a JSON document. The document in the example is the one at https://sdk.invoicing.eta.gov.eg/files/one-doc.jsonNote: This example requires Chilkat v9.5.0.92 or greater.
Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
DECLARE @iTmp0 int
DECLARE @success int
SELECT @success = 0
-- This example assumes the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
-- Note: This example requires Chilkat v9.5.0.92 or greater.
-- (In v9.5.0.92, the "itida" encoding was added to StringBuilder's Encode method.)
DECLARE @sb int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sb OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
-- This is the file at https://sdk.invoicing.eta.gov.eg/files/one-doc.json
EXEC sp_OAMethod @sb, 'LoadFile', @success OUT, 'qa_data/itida/sdk.invoicing.eta.gov.eg/files/one-doc.json', 'utf-8'
IF @success = 0
BEGIN
PRINT 'Failed to load input file.'
EXEC @hr = sp_OADestroy @sb
RETURN
END
-- Convert the contents of sb to the ITIDA canonical form.
-- Always pass utf-8 for the 2nd arg.
EXEC sp_OAMethod @sb, 'Encode', @success OUT, 'itida', 'utf-8'
DECLARE @canonical nvarchar(4000)
EXEC sp_OAMethod @sb, 'GetAsString', @canonical OUT
PRINT @canonical
-- Output:
-- "SomeValue""DELIVERY""APPROACH""SomeValue""PACKAGING""SomeValue""DATEVALIDITY""2020-09-28T09:30:10Z"........."TOTALAMOUNT""5191.50""EXTRADISCOUNTAMOUNT""5.00""TOTALITEMSDISCOUNTAMOUNT""14.00"
-- Let's verify we got the correct result.
DECLARE @sbExpected int
EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbExpected OUT
EXEC sp_OAMethod @sbExpected, 'LoadFile', @success OUT, 'qa_data/itida/sdk.invoicing.eta.gov.eg/files/one-doc-serialized.json.txt', 'utf-8'
IF @success = 0
BEGIN
PRINT 'Failed to expected output file.'
EXEC @hr = sp_OADestroy @sb
EXEC @hr = sp_OADestroy @sbExpected
RETURN
END
-- Compare our computed canonical string with the expected result.
EXEC sp_OAMethod @sb, 'ContentsEqualSb', @iTmp0 OUT, @sbExpected, 1
IF @iTmp0 = 1
BEGIN
PRINT 'The computed canonical result is correct.'
END
ELSE
BEGIN
PRINT 'The computed canonical result is NOT correct.'
END
EXEC @hr = sp_OADestroy @sb
EXEC @hr = sp_OADestroy @sbExpected
END
GO