SQLServer 解析JSON字串

2022-01-11 02:39:51 字數 2556 閱讀 7058

-----           解析字串函式                -----

create function [dbo].[fn_split](@p_str varchar(8000), @p_split varchar(10))

returns @tab table(tid varchar(2000))

asbegin

declare @idx int

declare @len int

select @len = len(@p_split), @idx = charindex(@p_split, @p_str, 1)

while(@idx >= 1)

begin

insert into @tab select left(@p_str, @idx - 1)

select @p_str = right(@p_str, len(@p_str) - @idx - @len + 1), @idx = charindex(@p_split, @p_str, 1)

endif(@p_str <> '') insert into @tab select @p_str

return

end;

-------------------------------

--  解析json字串  --

-------------------------------

--p_jsonstr json字串

--p_key 鍵

--返回p_key對應的值

create function [dbo].[fn_parsejson](@p_jsonstr varchar(8000),

@p_key varchar(200)) 

returns varchar(3000)

as      

begin

declare @rtnval varchar(3000);

declare @i int;

declare @jsonkey varchar(200);

declare @jsonvalue varchar(1000);

declare @json varchar(8000);

declare @tmprow varchar(2000);

declare @tmpval varchar(2000);

if(@p_jsonstr is not null)

begin

set @json = replace(@p_jsonstr, '', '');

set @json = replace(@json, '"', '');

declare @json_cur cursor; 

-- 宣告外層游標

set @json_cur = cursor for select tid from fn_split(@json, ',');

open @json_cur-- 開啟游標(外層游標)

fetch next from @json_cur into @tmprow-- 提取外層游標行

while(@@fetch_status = 0)

begin

if(@tmprow is not null)

begin

set @i = 0;

set @jsonkey = '';

set @jsonvalue = '';

declare @str_cur cursor;-- 宣告內層游標

set @str_cur = cursor for select tid from fn_split(@tmprow, ':');--第二次拆分後的游標(內層游標)

open @str_cur  -- 開啟游標

fetch next from @str_cur into @tmpval-- 提取內層游標行

while(@@fetch_status = 0)

begin

if(@i = 0) 

begin

set @jsonkey = @tmpval

endif(@i = 1)

begin

set @jsonvalue = @tmpval

endset @i = @i + 1

fetch next from @str_cur into @tmpval-- 內層游標下移一行

endclose @str_cur-- 關閉內層游標

deallocate @str_cur -- 釋放內層游標

if(@jsonkey = @p_key)

begin

set @rtnval = @jsonvalue

endend

fetch next from @json_cur into @tmprow-- 內層游標結束後,外層游標下移一行

endclose @json_cur-- 關閉外層游標

deallocate @json_cur-- 釋放外層游標

end

return @rtnval  

end使用例項

select dbo.fn_parsejson('','company')

JSON解析 XML解析

json解析 1大括號代表字典 2中括號 小括號 代表陣列 3冒號的左右兩邊分別為鍵和值 key value 4資料和資料之間 用逗號隔開 我們在本機上建立乙個file.xml,進行解析,並取出年齡35 json解析 本地讀取student.xm l檔案nsstring jstr nsstring ...

JSON解析 XML解析

主要是顯示地理位置和天氣以及溫度。對網路請求下來的json資料進行解析。import viewcontroller.h define kweatherurl inte ce viewcontroller property weak,nonatomic iboutlet uilabel citylab...

JSON庫解析json檔案

cocoa 下json開源的類庫有很多,其中jsonkit庫是非常簡單易用而且效率又比較高的。解析 舉例 import jsonkit.h 假設 strjson 是網路上接收到的 json 字串,nsstring strjson bage 3,sound def.nsdictionary resul...