本周接到一个任务,用VB6.0发送HTTP请求,并处理返回的数据。
发送的是json格式字符串,接收到服务器返回的json字符串并处理。
VB6太老了,怎样处理json,是否有现成的第三方库呢?经过一番探索,找到了VBJSON这个库。
使用过程如下:
1. 下载VBJSON:http://www.ediy.co.nz/vbjson-json-parser-library-in-vb6-xidc55680.html
备用下载:https://download.csdn.net/download/zhouyingge1104/14087522
目录内容如下:
2. 在工程中引用VBJSON
右击工程名称-》添加-》模块-》现存,选择JSON.bas
右击工程名称-》添加-》类模块-》现存,选择cJSONScript.cls和cStringBuilder.cls
3. 添加相关引用
工程-》引用,勾选几个相关的引用项,如下图
4. 生成json字符
要生成的字符串为:
{
"issd":
{
"F_Model":"QA-1/155(UEW)",
"F_PanJuClass":"PT4灰",
"F_InStockNum":20
}
}
Set p = JSON.parse("{}")
Set issd = JSON.parse("{}")
p.Add "issd", issd
p.Item("issd").Add "F_Model", "QA-1/155(UEW)"
p.Item("issd").Add "F_PanJuClass", "PT4灰"
p.Item("issd").Add "F_InStockNum", 20
TextContent.Text = JSON.toString(p)
生成的json字符串如下图:
{
"issd":
{
"F_Model":"QA-1/155(UEW)",
"F_PanJuClass":"PT4灰",
"F_InStockNum":20
}
}
效果:
5. 解析json字符
要解析的字符串为:
{
"Info":
{
"F_EnCode":"2010050030110301",
"F_PanJuClass":"PT4灰",
"F_CreatorUserName":"方明华"
}
}
Dim sInputJson As String
sInputJson = ...
' sets p
Set p = JSON.parse(sInputJson)
Dim str1 As String
Dim str2 As String
Dim str3 As String
str1 = p.Item("Info").Item("F_EnCode")
str2 = p.Item("Info").Item("F_PanJuClass")
str3 = p.Item("Info").Item("F_CreatorUserName")
MsgBox str1 & vbCrLf & str2 & vbCrLf & str3
效果:
到这里,生成json和解析json的问题都解决了。
***********************************************************************************************************
关于乱码问题的记录:
默认的VBJSON版本中,如果json对象中带有中文和特殊符号,则通过JSON.toString生成出来的字符串中会有奇怪的字符,如下图:
费了一番功夫,找到了原因,原来是VBJSON库里的问题:在模块JSON中,有个toString方法,对字符串做了一次Encode,导致中文字符变成奇怪的符号。
解决的办法是把这个Encode方法去掉:
去掉Encode后,中文恢复正常,如下图: