本人菜鸟求高人指点一下,用jquery如何取到一个json数组对象中的一条数据中的一个属性值,如下图举个例子

本人菜鸟求高人指点一下,用jquery如何取到一个json数组对象中的一条数据中的一个属性值,如下图举个例子,第1张

我用PB写过一个函数,把json串转成datawindow

不过只适用于单层次的json,就是描述一个关系表的json

global type f_json2datawindow from function_object

end type

forward prototypes

global function string f_json2datawindow (string json_file, ref datawindow dw_1)

end prototypes

global function string f_json2datawindow (string json_file, ref datawindow dw_1);string ls_file

ls_file=json_file

//查找替换全部的回车,避免影响判断

ls_file=f_replace_string_quotecharacter(ls_file,char(13),' ')

ls_file=f_replace_string_quotecharacter(ls_file,char(10),' ')

//查找替换全部的TAB

ls_file=f_replace_string_quotecharacter(ls_file,char(9),' ')

//滤掉首尾空格

ls_file=trim(ls_file)

if len(ls_file) =0 then

return('!!无数据')

end if

if left(ls_file,1) <>'{' or right(ls_file,1)<>'}' then

return('!!请用花括号把全部数据括起来。')

end if

ls_file=mid(ls_file,2,len(ls_file) - 2) //取得花括号里的部分

//取标题

string ls_title

string ls_parm[],ls_clm[]

string ls_clmname[]

long n,m,p,q,i

dw_1reset()

n=f_gettagparm(ls_file,'"',ls_parm[])

if n<=2 then

return('!!请用半角双引号把表单的标题栏括起来')

end if

ls_title=ls_parm[2]

//找之后的冒号

//得先找标题栏结尾 q

p=pos(ls_file,'"'+ls_parm[2]+'"')

q=p+len('"'+ls_parm[2]+'"') - 1

//去掉标题栏

ls_file=right(ls_file,len(ls_file) - q )

//过滤掉空格(标题栏与冒号之间的空格)

ls_file=trim(ls_file)

if left(ls_file,1)<>':' then

return('!!标题栏后应跟着冒号')

end if

//去掉冒号再滤空格再去掉首尾方括号

ls_file=trim(right(ls_file,len(ls_file) - 1))

if left(ls_file,1)<>'[' and right(ls_file,1)<>']' then

return('!!请将数据用方括号括起来')

end if

ls_file=trim(mid(ls_file,2,len(ls_file) - 2))

//得到数据

string ls_data

ls_data = ls_file

//应至少有1行,否则无法获得字段名

//第一个应该是左花括号

if left(ls_file,1)<>'{' then

return('!!第一行数据应用左花括号“{”开头')

end if

//找第一行的右花括号

p=f_pos_outof_quote(ls_file,'}',1)

if p>=2 then

else

return('!!第一行数据缺少右花括号“}”做结尾')

end if

//去掉花括号,获得第1行

ls_file=trim(mid(ls_file,2, p - 2))

//列分解

n=f_gettagparm_quotecharacter(ls_file,',',ls_clm)

if n=0 then

return('!!列数为0')

end if

//各列取得列名

string ls_clmnames

for i= 1 to n

ls_clm[i]=trim(ls_clm[i]) // 去掉收尾空格

m=f_gettagparm_quotecharacter(ls_clm[i],':',ref ls_parm)

if m=0 then

return('!!无法取得第1行第'+string(i)+'列的列名')

end if

ls_parm[1]=trim(ls_parm[1])

ls_clmname[i]=ls_parm[1]

if left(ls_clmname[i],1)='"' then ls_clmname[i] = right(ls_clmname[i],len(ls_clmname[i]) - 1)

if right(ls_clmname[i],1)='"' then ls_clmname[i] = left(ls_clmname[i],len(ls_clmname[i]) - 1)

if pos(ls_clmname[i],'{')>=1 or pos(ls_clmname[i],'}')>=1 or pos(ls_clmname[i],'[')>=1 or pos(ls_clmname[i],']')>=1 &

or pos(ls_clmname[i],',')>=1 or pos(ls_clmname[i],char(9))>=1 then

return('!!第1行第'+string(i)+'列的列名中含有非法的字符')

end if

ls_clmnames = ls_clmnames + '['+ls_clmname[i]+']'

next

//生成数据窗口

string sqlstr

sqlstr='select'

for i= 1 to n

sqlstr=sqlstr +' lpad(~' ~',1000) as "'+ls_clmname[i]+'" ,'

next

sqlstr=left(sqlstr,len(sqlstr) - 1) +' from dual '

if f_gendw(dw_1,sqlstr) <>0 then

return('!!生成数据窗口失败')

end if

//从ls_data加载数据

long ll_begin ,ll_end

long quote_count

long c,r

long ret

string ls_row

string ls_value[]

ls_data=trim(ls_data) //过滤首尾空格后,首尾应都是花括号

if left(ls_data,1)<>'{' then

return('!!获取数据时,第1行开头不是花括号')

end if

dw_1setredraw(false)

p=1

ll_begin=p

q=f_pos_outof_quote(ls_data,'}',p)

r=1

do while p>=1

if q>=1 then

quote_count=f_charcount(mid(ls_data ,ll_begin +1,q - ll_begin - 1),'"') //数花括号之间的双引号数量

if mod(quote_count,2)=1 then //是奇数,找到的花括号是数据内容,则忽略

q=f_pos_outof_quote(ls_data,'}',q+1)

else

ls_row=trim(mid(ls_data,ll_begin+1,q - ll_begin - 1))

r++

c++

dw_1insertrow(c)

//解析列

n=f_gettagparm_quotecharacter(ls_row,',',ls_clm)

if n=0 then

dw_1setredraw(true)

return('!!第'+string(c)+'行的列数为0')

end if

//各列取得列名

for i= 1 to n

ls_clm[i]=trim(ls_clm[i]) // 去掉收尾空格

m=f_gettagparm_quotecharacter(ls_clm[i],':',ref ls_parm)

if m=0 then

dw_1setredraw(true)

return('!!无法取得第'+string(c)+'行第'+string(i)+'列的列名')

end if

ls_parm[1]=trim(ls_parm[1])

ls_clmname[i]=ls_parm[1]

if left(ls_clmname[i],1)='"' then ls_clmname[i] = right(ls_clmname[i],len(ls_clmname[i]) - 1)

if right(ls_clmname[i],1)='"' then ls_clmname[i] = left(ls_clmname[i],len(ls_clmname[i]) - 1)

ls_value[i]=trim(ls_parm[2])

if left(ls_value[i],1)='"' then ls_value[i] = right(ls_value[i],len(ls_value[i]) - 1)

if right(ls_value[i],1)='"' then ls_value[i] = left(ls_value[i],len(ls_value[i]) - 1)

ret=pos(ls_clmnames,'['+ls_clmname[i]+']')

if ret=0 then

dw_1setredraw(true)

return('!!第'+string(c)+'行第'+string(i)+'列写入数据窗口时,列名('+ls_clmname[i]+')不存在于第1行')

end if

ret=dw_1setitem(c,ls_clmname[i],ls_value[i])

if isnull(ret) then

dw_1setredraw(true)

return('!!第'+string(c)+'行第'+string(i)+'列写入数据窗口时,参数为空')

elseif ret<>1 then

dw_1setredraw(true)

return('!!第'+string(c)+'行第'+string(i)+'列写入数据窗口时,行号或列名('+ls_clmname[i]+')不存在')

end if

next

p=f_pos_outof_quote(ls_data,'{',q + 1)

ll_begin=p

q=f_pos_outof_quote(ls_data,'}',p)

end if

else

dw_1setredraw(true)

return('!!获取数据时,第'+string(r)+'行找不到右边的花括号')

end if

loop

dw_1setredraw(true)

return(ls_title)

end function

以上就是关于本人菜鸟求高人指点一下,用jquery如何取到一个json数组对象中的一条数据中的一个属性值,如下图举个例子全部的内容,包括:本人菜鸟求高人指点一下,用jquery如何取到一个json数组对象中的一条数据中的一个属性值,如下图举个例子、怎么用jsp生成json格式数据,然后用js又怎样读取其数据、请教,有用pb解析JSON的方法例子么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9327878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存