Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Check if Integer Exists at JSON PathDemonstrates how to get an integer value at a JSON path, and how to check to see if it exists.
-- 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 -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) DECLARE @json int -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @success int -- First build simple JSON.. EXEC sp_OAMethod @json, 'UpdateInt', @success OUT, 'test.abc', 100 EXEC sp_OASetProperty @json, 'EmitCompact', 0 EXEC sp_OAMethod @json, 'Emit', @sTmp0 OUT PRINT @sTmp0 -- This is our JSON: -- { -- "test": { -- "abc": 100, -- } -- } DECLARE @path nvarchar(4000) SELECT @path = 'test.notHere' -- The call to IntOf will return 0, because it's not present. -- But how do we know if it really was present, and the value was truly 0? DECLARE @val int EXEC sp_OAMethod @json, 'IntOf', @val OUT, @path PRINT 'val = ' + @val -- We cannot use LastMethodSuccess because LastMethodSuccess only applies -- to methods that: -- - return a string -- - return a new Chilkat object, binary bytes, or a date/time. -- - returns a boolean status where 1 = success and 0 = failed. -- - returns an integer where failure is defined by a return value less than zero. -- The IntOf method fits none of these requirements, and therefore the LastMethodSuccess -- is not a valid indicator.. DECLARE @wasFound int EXEC sp_OAGetProperty @json, 'LastMethodSuccess', @wasFound OUT PRINT 'wasFound = ' + @wasFound + ' (not a valid indicator)' -- Instead, if the returned value is 0, we can double-check to see if the member was truly there.. IF @val = 0 BEGIN EXEC sp_OAMethod @json, 'HasMember', @wasFound OUT, @path PRINT 'wasFound = ' + @wasFound IF @wasFound = 1 BEGIN PRINT 'The value was present and is 0.' END ELSE BEGIN PRINT 'no member is present at test.notHere' END END ELSE BEGIN PRINT 'val = ' + @val END -- Alternatively, you could check to see if the member exists beforehand.. EXEC sp_OAMethod @json, 'HasMember', @iTmp0 OUT, @path IF @iTmp0 = 1 BEGIN EXEC sp_OAMethod @json, 'IntOf', @iTmp0 OUT, @path PRINT 'val = ' + @iTmp0 END ELSE BEGIN PRINT 'no member at ' + @path END EXEC @hr = sp_OADestroy @json END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.