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

Note: This example requires Chilkat v9.5.0.92 or greater.

Chilkat SQL Server Downloads

SQL Server
-- 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