Sample code for 30+ languages & platforms
SQL Server

Build JSON with Mixture of Arrays and Objects

See more JSON Examples

Another example showing how to build JSON containing a mixture of arrays and objects.

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
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    -- We want to build the following JSON:

    -- { 
    --   "accountEnabled": true,
    --   "assignedLicenses": [
    --     { 
    --       "disabledPlans": [ "bea13e0c-3828-4daa-a392-28af7ff61a0f" ],
    --       "skuId": "skuId-value"
    --     }
    --   ],
    --   "assignedPlans": [
    --     { 
    --       "assignedDateTime": "datetime-value",
    --       "capabilityStatus": "capabilityStatus-value",
    --       "service": "service-value",
    --       "servicePlanId": "bea13e0c-3828-4daa-a392-28af7ff61a0f"
    --     }
    --   ],
    --   "businessPhones": [
    --     "businessPhones-value"
    --   ],
    --   "city": "city-value",
    --   "companyName": "companyName-value"
    -- }

    DECLARE @json int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    DECLARE @success int
    EXEC sp_OAMethod @json, 'UpdateBool', @success OUT, 'accountEnabled', 1
    EXEC sp_OASetProperty @json, 'I', 0
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'assignedLicenses[i].disabledPlans[0]', 'bea13e0c-3828-4daa-a392-28af7ff61a0f'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'assignedLicenses[i].skuId', 'skuId-value'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'assignedPlans[i].assignedDateTime', 'datetime-value'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'assignedPlans[i].capabilityStatus', 'capabilityStatus-value'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'assignedPlans[i].service', 'service-value'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'assignedPlans[i].servicePlanId', 'bea13e0c-3828-4daa-a392-28af7ff61a0f'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'businessPhones[i]', 'businessPhones-value'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'city', 'city-value'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'companyName', 'companyName-value'

    EXEC sp_OASetProperty @json, 'EmitCompact', 0
    EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT
    PRINT @sTmp0

    -- Output:

    -- { 
    --   "accountEnabled": true,
    --   "assignedLicenses": [
    --     { 
    --       "disabledPlans": [
    --         "bea13e0c-3828-4daa-a392-28af7ff61a0f"
    --       ],
    --       "skuId": "skuId-value"
    --     }
    --   ],
    --   "assignedPlans": [
    --     { 
    --       "assignedDateTime": "datetime-value",
    --       "capabilityStatus": "capabilityStatus-value",
    --       "service": "service-value",
    --       "servicePlanId": "bea13e0c-3828-4daa-a392-28af7ff61a0f"
    --     }
    --   ],
    --   "businessPhones": [
    --     "businessPhones-value"
    --   ],
    --   "city": "city-value",
    --   "companyName": "companyName-value"
    -- }

    EXEC @hr = sp_OADestroy @json


END
GO