VB6.0 json操作与中文乱码处理

本周接到一个任务,用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后,中文恢复正常,如下图:

猜你喜欢

转载自blog.csdn.net/zhouyingge1104/article/details/112409078