注册 登录
编程论坛 VFP论坛

请教JSON,用的是foxjson.dll,字符数组取值报错!

laibinhua 发布于 2021-12-06 10:39, 2653 次点击
请教大佬:
原报文:
{"errcode":0,"errmsg":"ok","chat_info":{"owner":"0250452735598104","showHistoryType":0,"chatid":"chateca5eb08b7f98f17f5f63b2f731b954a","validationType":0,"useridlist":["01062505372440241082","31192441281231555","0250452735598104"],"icon":"@lALPDf0i0cmB28TNAljNAlg","openConversationId":"cidtYlM6oBqlSljhqpEIX8KRQ==","searchable":0,"chatBannedType":0,"managementType":0,"mentionAllAuthority":0,"conversationTag":2,"name":"测试001","status":1}}
使用过程:
ltype=oJson.item("chat_info").item("name").value  &&可以正常取到值
ltype=oJson.item("chat_info").item("useridlist").value &&无法正常取到值,请教这里如何取?
12 回复
#2
foxfans2021-12-06 11:07
TEXT TO cJsonstr noshow
{"errcode":0,"errmsg":"ok","chat_info":{"owner":"0250452735598104","showHistoryType":0,"chatid":"chateca5eb08b7f98f17f5f63b2f731b954a","validationType":0,"useridlist":["01062505372440241082","31192441281231555","0250452735598104"],"icon":"@lALPDf0i0cmB28TNAljNAlg","openConversationId":"cidtYlM6oBqlSljhqpEIX8KRQ==","searchable":0,"chatBannedType":0,"managementType":0,"mentionAllAuthority":0,"conversationTag":2,"name":"测试001","status":1}}
ENDTEXT
m.cJsonStr=[var json=]+cJsonstr+[;]
m.oJs=CREATEOBJECT("MSScriptControl.ScriptControl")
m.oJs.Language="jscript"
m.oJs.addCode(m.cJsonStr)   
m.oSon=m.oJs.CodeObject.json.chat_info.useridlist
FOR EACH m.SubItem IN m.oSon
?m.SubItem &&这大概就是你要的值了
ENDFOR
RELEASE m.oJs
#3
吹水佬2021-12-06 11:10
useridlist是数组,不是对象

#4
laibinhua2021-12-06 11:14
回复 3楼 吹水佬
大佬,是数组,要怎么改一下呢?
#5
laibinhua2021-12-06 11:15
回复 2楼 foxfans
谢谢你的回复,你的方法很不错!
#6
吹水佬2021-12-06 11:27
回复 4楼 laibinhua
程序代码:
TEXT TO cJson TEXTMERGE NOSHOW PRETEXT 15
{"errcode":0,"errmsg":"ok","chat_info":{"owner":"0250452735598104","showHistoryType":0,"chatid":"chateca5eb08b7f98f17f5f63b2f731b954a","validationType":0,"useridlist":["01062505372440241082","31192441281231555","0250452735598104"],"icon":"@lALPDf0i0cmB28TNAljNAlg","openConversationId":"cidtYlM6oBqlSljhqpEIX8KRQ==","searchable":0,"chatBannedType":0,"managementType":0,"mentionAllAuthority":0,"conversationTag":2,"name":"测试001","status":1}}
ENDTEXT
sc = CREATEOBJECT("ScriptControl")
sc.Language = "JavaScript"
sc.addCode("var json="+cJson)   
? sc.eval("json.chat_info.useridlist[0]")
? sc.eval("json.chat_info.useridlist[1]")
? sc.eval("json.chat_info.useridlist[2]")
#7
laibinhua2021-12-06 14:11
回复 2楼 foxfans
老师:用这个方法,又碰到个问题:
原始报文:
{"errcode":0,"errmsg":"ok","result":{"has_more":false,"list":[{"active":true,"admin":true,"avatar":"","boss":false,"dept_id_list":[1],"dept_order":176342269632077512,"exclusive_account":false,"hide_mobile":false,"leader":false,"mobile":"1378223750","name":"张三","state_code":"86","unionid":"7Az7l9unGiPeiPeliSJiPMwSxwiEiE","userid":"31192441281231555"},{"active":true,"admin":true,"avatar":"","boss":false,"dept_id_list":[1],"dept_order":176287327676115512,"exclusive_account":false,"hide_mobile":false,"leader":false,"mobile":"13333332616","name":"李四","state_code":"86","unionid":"3yp6KVDiiLaEiE","userid":"0250452735598104"},{"active":true,"admin":false,"avatar":"","boss":false,"dept_id_list":[1],"dept_order":176279123423347512,"exclusive_account":false,"hide_mobile":false,"leader":false,"mobile":"13122255731","name":"王五","state_code":"86","unionid":"nxiPrUYqlECM28QouwDa26QiEiE","userid":"01062505372440241082"}]},"request_id":"5nmgrf45ars4"}
我用你的方法,这样取所有人的姓名报错:
m.oJs=CREATEOBJECT("MSScriptControl.ScriptControl")
m.oJs.Language="jscript"
m.oJs.addCode(m.cJsonStr)   
m.oSon=m.oJs.CodeObject.json.result.list.name
FOR EACH m.SubItem IN m.oSon
?m.SubItem &&这大概就是你要的值了
ENDFOR
RELEASE m.oJs
#8
吹水佬2021-12-06 14:24
试试
m.oSon=m.oJs.CodeObject.json.result.list
FOR EACH m.SubItem IN m.oSon
?m.SubItem.name  &&这大概就是你要的值了
ENDFO
#9
laibinhua2021-12-06 14:25
回复 8楼 吹水佬
谢谢大佬,你这样对!
#10
kangss2021-12-07 18:33
谢谢!学习了
#11
laibinhua2022-11-05 16:13
回复 2楼 foxfans
m.oSon=m.oJs.CodeObject.json.result
FOR EACH m.SubItem IN m.oSon
?m.SubItem &&这大概就是你要的值了
ENDFOR

用什么方法可以知道  m.oSon 里有几个Item记录 , 我这样写不对:
m.oSon.count()
m.oSon.items.count()

[此贴子已经被作者于2022-11-5 16:16编辑过]

#12
吹水佬2022-11-05 17:06
回复 11楼 laibinhua
m.oSon.length
#13
schtg2022-11-05 18:04
学习啦!
1