VBMAN.ToolsDic - 字典工具对象
概述
VBMAN.ToolsDic 提供了字典对象的扩展功能,包括深拷贝、合并、URL 编码转换等。
方法
DeepCopy
深拷贝字典对象
vb
Public Function DeepCopy(srcDic As Scripting.Dictionary) As Scripting.Dictionary参数:
srcDic- 源字典
返回: 新的字典对象
说明:
- 目前仅实现第一层值的拷贝
- 对象类型使用 Set 赋值
示例:
vb
Dim original As New Scripting.Dictionary
original("key1") = "value1"
original("key2") = 123
' 深拷贝
Dim copy As Scripting.Dictionary
Set copy = VBMAN.ToolsDic.DeepCopy(original)
' 修改副本不影响原字典
copy("key1") = "modified"
Debug.Print original("key1") ' 输出: value1OverWrite
合并字典到目标字典
vb
Public Sub OverWrite(DistDic As Scripting.Dictionary, srcDic As Scripting.Dictionary, Optional OnlyKey As Boolean = True)参数:
DistDic- 目标字典srcDic- 源字典OnlyKey- 是否只合并已存在的键(默认 True)
说明:
- 支持递归合并嵌套字典
OnlyKey=True时只更新目标字典中已存在的键OnlyKey=False时添加所有源字典的键
示例:
vb
Dim target As New Scripting.Dictionary
target("a") = 1
target("b") = 2
Dim source As New Scripting.Dictionary
source("a") = 100 ' 已存在
source("c") = 300 ' 不存在
' 只合并已存在的键
VBMAN.ToolsDic.OverWrite target, source, True
Debug.Print target("a") ' 100
Debug.Print target.Exists("c") ' False
' 合并所有键
VBMAN.ToolsDic.OverWrite target, source, False
Debug.Print target("c") ' 300ToWwwFormUrlencoded
生成 www-form-urlencoded 内容
vb
Public Function ToWwwFormUrlencoded(Dic As Scripting.Dictionary) As String参数:
Dic- 字典对象
返回: URL 编码格式字符串
示例:
vb
Dim params As New Scripting.Dictionary
params("name") = "张三"
params("age") = 25
Dim encoded As String
encoded = VBMAN.ToolsDic.ToWwwFormUrlencoded(params)
' 输出: name=张三&age=25FromWwwFormUrlencoded
解析 www-form-urlencoded 内容
vb
Public Function FromWwwFormUrlencoded(Content As String, Dic As Scripting.Dictionary) As Boolean参数:
Content- URL 编码格式字符串Dic- 接收结果的字典对象
返回: True=成功, False=失败
示例:
vb
Dim params As New Scripting.Dictionary
Dim success As Boolean
success = VBMAN.ToolsDic.FromWwwFormUrlencoded("name=张三&age=25", params)
Debug.Print params("name") ' 张三
Debug.Print params("age") ' 25TowLevelDicAssign
双层节点字典赋值
vb
Public Sub TowLevelDicAssign(Dic As Scripting.Dictionary, Lv1Name As String, Lv2Name As String, Value As Variant)参数:
Dic- 字典对象Lv1Name- 第一层键名Lv2Name- 第二层键名Value- 要赋的值
说明:
- 如果第一层键不存在,自动创建
- 方便操作嵌套字典结构
示例:
vb
Dim data As New Scripting.Dictionary
' 赋值双层结构
VBMAN.ToolsDic.TowLevelDicAssign data, "user", "name", "张三"
VBMAN.ToolsDic.TowLevelDicAssign data, "user", "age", 25
Debug.Print data("user")("name") ' 张三
Debug.Print data("user")("age") ' 25综合示例
示例1: 字典合并
vb
Private Sub MergeDictionaries()
Dim defaults As New Scripting.Dictionary
defaults("host") = "localhost"
defaults("port") = 8080
defaults("timeout") = 30
Dim config As New Scripting.Dictionary
config("port") = 9090 ' 覆盖默认值
' 合并配置
VBMAN.ToolsDic.OverWrite config, defaults, False
Debug.Print config("host") ' localhost
Debug.Print config("port") ' 9090
Debug.Print config("timeout") ' 30
End Sub示例2: HTTP 参数处理
vb
Private Sub BuildQueryString()
Dim params As New Scripting.Dictionary
params("search") = "vb6"
params("page") = 1
params("size") = 20
' 生成 URL 参数
Dim query As String
query = VBMAN.ToolsDic.ToWwwFormUrlencoded(params)
Debug.Print "https://api.example.com/search?" & query
' 输出: https://api.example.com/search?search=vb6&page=1&size=20
End Sub示例3: 配置嵌套结构
vb
Private Sub BuildNestedConfig()
Dim config As New Scripting.Dictionary
' 构建嵌套配置
VBMAN.ToolsDic.TowLevelDicAssign config, "database", "host", "localhost"
VBMAN.ToolsDic.TowLevelDicAssign config, "database", "port", 3306
VBMAN.ToolsDic.TowLevelDicAssign config, "cache", "enabled", True
VBMAN.ToolsDic.TowLevelDicAssign config, "cache", "ttl", 3600
' 输出 JSON
Dim json As New cJson
json("config") = config
Debug.Print json.Encode
End Sub最佳实践
- 深拷贝注意: 当前版本只深拷贝第一层,嵌套对象仍需注意
- 合并策略: 根据需求选择
OnlyKey参数 - URL 编码: 配合
ToolsHttp.UrlEncode使用处理特殊字符 - 嵌套层级:
TowLevelDicAssign只支持两层结构