SQL Server
SQL Server
Swap JSON Objects
See more JSON Examples
Demonstrates how to swap two JSON objects within a JSON document.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
-- Important: Do not use nvarchar(max). See the warning about using nvarchar(max).
DECLARE @sTmp0 nvarchar(4000)
DECLARE @success int
SELECT @success = 0
DECLARE @json int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT
IF @hr <> 0
BEGIN
PRINT 'Failed to create ActiveX component'
RETURN
END
EXEC sp_OASetProperty @json, 'EmitCompact', 0
-- Load the following JSON:
-- {
-- "petter": {
-- "DOB": "26/02/1986",
-- "gender": "male",
-- "country": "US"
-- },
-- "Sara": {
-- "DOB": "13/05/1982",
-- "gender": "female",
-- "country": "FR"
-- },
-- "Jon": {
-- "DOB": "19/03/1984",
-- "gender": "male",
-- "country": "UK"
-- }
-- }
EXEC sp_OAMethod @json, 'LoadFile', @success OUT, 'qa_data/json/people.json'
IF @success = 0
BEGIN
EXEC sp_OAGetProperty @json, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @json
RETURN
END
-- Swap the positions of Jon and Sara.
DECLARE @index1 int
EXEC sp_OAMethod @json, 'IndexOf', @index1 OUT, 'Jon'
DECLARE @index2 int
EXEC sp_OAMethod @json, 'IndexOf', @index2 OUT, 'Sara'
EXEC sp_OAMethod @json, 'Swap', @success OUT, @index1, @index2
-- We have this now:
EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT
PRINT @sTmp0
-- {
-- "petter": {
-- "DOB": "26/02/1986",
-- "gender": "male",
-- "country": "US"
-- },
-- "Jon": {
-- "DOB": "19/03/1984",
-- "gender": "male",
-- "country": "UK"
-- },
-- "Sara": {
-- "DOB": "13/05/1982",
-- "gender": "female",
-- "country": "FR"
-- }
-- }
-- To swap an inner member:
DECLARE @jsonSara int
EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jsonSara OUT
EXEC sp_OAMethod @json, 'ObjectOf2', @success OUT, 'Sara', @jsonSara
EXEC sp_OAMethod @jsonSara, 'IndexOf', @index1 OUT, 'DOB'
EXEC sp_OAMethod @jsonSara, 'IndexOf', @index2 OUT, 'country'
EXEC sp_OAMethod @jsonSara, 'Swap', @success OUT, @index1, @index2
-- We now have this:
EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT
PRINT @sTmp0
-- {
-- "petter": {
-- "DOB": "26/02/1986",
-- "gender": "male",
-- "country": "US"
-- },
-- "Jon": {
-- "DOB": "19/03/1984",
-- "gender": "male",
-- "country": "UK"
-- },
-- "Sara": {
-- "country": "FR",
-- "gender": "female",
-- "DOB": "13/05/1982"
-- }
-- }
EXEC @hr = sp_OADestroy @json
EXEC @hr = sp_OADestroy @jsonSara
END
GO