求助VB6解析JSON后,数组元素的引用方法

jessezappy 2018-05-27 06:51:04
为了解析JSON字串,用https://blog.csdn.net/boys1999/article/details/45843313的方法试了下,普通变量引用可行,但是遇到json里面有数组元素的话,就不晓得怎么引用了,比如下面的json字串:


{
"user_info_list": [
{
"subscribe": 1,
"openid": "otvxTs4dckWG7imySrJd6jSi0CWE",
"nickname": "iWithery",
"sex": 1,
"language": "zh_CN",
"city": "揭阳",
"province": "广东",
"country": "中国",

"headimgurl": "http://thirdwx.qlogo.cn/mmopen/xbIQx1GRqdvyqkMMhEaGOX802l1CyqMJNgUzKP8MeAeHFicRDSnZH7FY4XB7p8XHXIf6uJA2SCunTPicGKezDC4saKISzRj3nz/0",

"subscribe_time": 1434093047,
"unionid": "oR5GjjgEhCMJFyzaVZdrxZ2zRRF4",
"remark": "",

"groupid": 0,
"tagid_list":[128,2],
"subscribe_scene": "ADD_SCENE_QR_CODE",
"qr_scene": 98765,
"qr_scene_str": ""

},
{
"subscribe": 0,
"openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg"
}
]
}

user_info_list 里面的元素解析后不知道用什么办法来引用了。
...全文
1165 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jessezappy 2019-04-22
  • 打赏
  • 举报
回复
引用 7 楼 weixin_41968627 的回复:
新手,不会怎么改,只能放弃

只是把对象变量定义为全局变量: public JSON As Object

然后把创建对象变量和销毁的过程拿到函数外面
Set JSON = CreateObject("MSScriptControl.ScriptControl") : JSON.Language = "JScript",放到 SUB main 或 Form1.load 里面。
Set JSON = Nothing , 放到 Form unload 里面。即可。
这样 函数变为:
Public Function JSONParse(ByVal JSONPath As String, ByVal JSONString As String) As Variant
JSONParse = JSON.eval("JSON=" & JSONString & ";JSON." & JSONPath & ";")
End Function
jessezappy 2019-04-22
  • 打赏
  • 举报
回复
引用 8 楼 chuting1 的回复:
Dim ScriptObj As Object
Set ScriptObj = CreateObject("MSScriptControl.ScriptControl")
ScriptObj.AllowUI = True
ScriptObj.language = "JavaScript"
ScriptObj.AddCode "var data = " & JSONCode & ";"
'立即窗口显示第一个delist_time
sendjgcode = ScriptObj.Eval("data.code")
sendjgstr = ScriptObj.Eval("data.msg")
sendmsgs = ScriptObj.Eval("data.datas.length")

send1 = ScriptObj.Eval("data.datas[0].fee")
MsgBox sendjgcode & vbCrLf & sendjgstr & vbCrLf & sendmsgs & vbCrLf & send1
不错,这个虽然过程类似,但逻辑更清晰。
chuting1 2019-03-26
  • 打赏
  • 举报
回复
Dim ScriptObj As Object
Set ScriptObj = CreateObject("MSScriptControl.ScriptControl")
ScriptObj.AllowUI = True
ScriptObj.language = "JavaScript"
ScriptObj.AddCode "var data = " & JSONCode & ";"
'立即窗口显示第一个delist_time
sendjgcode = ScriptObj.Eval("data.code")
sendjgstr = ScriptObj.Eval("data.msg")
sendmsgs = ScriptObj.Eval("data.datas.length")

send1 = ScriptObj.Eval("data.datas[0].fee")
MsgBox sendjgcode & vbCrLf & sendjgstr & vbCrLf & sendmsgs & vbCrLf & send1
weixin_41968627 2018-10-13
  • 打赏
  • 举报
回复
新手,不会怎么改,只能放弃
jessezappy 2018-06-22
  • 打赏
  • 举报
回复
引用 5 楼 Chen8013 的回复:
[quote=引用 4 楼 jessezappy 的回复:]
[quote=引用 3 楼 Chen8013 的回复:]
恭喜楼主。

哎,结帖了,VB6板块人气不行了呀。[/quote]
现在真正想学VB的人少了,“新手”基本是“被迫学习”的。
如今整个CSDN网站都没什么人气了,更别说在很多人眼里已经“过时”的VB版了…………
[/quote]
还好,目前VB6在我手上还在大放异彩,什么微信模板消息、网页数据采集、数据库处理啦之类,简便实用!!!
jessezappy 2018-05-28
  • 打赏
  • 举报
回复
引用 3 楼 Chen8013 的回复:
恭喜楼主。
哎,结帖了,VB6板块人气不行了呀。
舉杯邀明月 2018-05-28
  • 打赏
  • 举报
回复
引用 4 楼 jessezappy 的回复:
[quote=引用 3 楼 Chen8013 的回复:] 恭喜楼主。
哎,结帖了,VB6板块人气不行了呀。[/quote] 现在真正想学VB的人少了,“新手”基本是“被迫学习”的。 如今整个CSDN网站都没什么人气了,更别说在很多人眼里已经“过时”的VB版了…………
舉杯邀明月 2018-05-27
  • 打赏
  • 举报
回复
恭喜楼主。
jessezappy 2018-05-27
  • 打赏
  • 举报
回复
找到个更简单的方法了:https://blog.csdn.net/bakw/article/details/51035338

Public Function JSONParse(ByVal JSONPath As String, ByVal JSONString As String) As Variant  
    Dim JSON As Object  
    Set JSON = CreateObject("MSScriptControl.ScriptControl")  
    JSON.Language = "JScript"  
    JSONParse = JSON.eval("JSON=" & JSONString & ";JSON." & JSONPath & ";")  
    Set JSON = Nothing  
End Function  
将以上例程稍作修改,不用反复创建object,查询完成前只创建一次即可,便可以极大的提升速度,就用这个了,简便!!
jessezappy 2018-05-27
  • 打赏
  • 举报
回复
看来是没办法解决了,只能使用 http://www.ediy.co.nz/content.asp?syscmd=dl&ID=A06786CB3E7E4F878FA542DBEE4B60B5 的方法了,创建为字典对象。

7,757

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧