这里提供的方式只是个人的摸索,肯定不是正常的方法。由于vb实在缺例子,学习正经的json读写方法有点花时间,而且我也不是专业写程序的,所以秉着“速度要紧,能用就好”宗旨,决定自写json的解析。
======正文=====
对于json文件的解析,我的思路是:
1.字符串去格式化,将无意义的字符去掉(空格、换行等)
2.将字符串对象化,生成为三个数组(因为对类模块使用不熟练,所以用了一个非常土的方法),第一个是Key的名字集合,第二个是数值的集合,第三个是数值类型的集合。
3.能将对象化后的数据,进行修改/添加/删除的操作。
4.将json对象转换为json字符串。
5.将json字符串格式化,转换为便于阅读的格式。
=====数组函数============
Class Arr
Function Cut(ArrayObject, Index) '将指定位置的元素cong
Dim ArrCount, OArr(), i, ci
ArrCount = UBound(ArrayObject)
If ArrCount = 0 Then
Cut = Reset()
Exit Function
End If
ReDim OArr(ArrCount - 1)
ci = 0
For i = 0 To ArrCount
If Index <> i Then
OArr(ci) = ArrayObject(i)
ci = ci + 1
End If
Next
Cut = OArr
End Function
Function Reset() '将变量初始化为数组
Dim arr(0)
arr(0) = "***Arr*initial***"
Reset = arr
End Function
Function Add(ArrayObject, item)
Dim ArrCount, OArr(), i
If TypeName(ArrayObject(0)) = "String" Then
If ArrayObject(0) = "***Arr*initial***" Then
ReDim OArr(0)
OArr(0) = item
Else
ArrCount = UBound(ArrayObject)
ReDim OArr(ArrCount + 1)
For i = 0 To ArrCount
OArr(i) = ArrayObject(i)
Next
OArr(ArrCount + 1) = item
End If
Else
ArrCount = UBound(ArrayObject)
ReDim OArr(ArrCount + 1)
For i = 0 To ArrCount
OArr(i) = ArrayObject(i)
Next
OArr(ArrCount + 1) = item
End If
Add = OArr
End Function
Function IsExistInArray(ArrayObject, MatchingValue) '判断数组中是否存在某一元素
Dim i
Dim RB As Boolean
RB = False
For i = 0 To UBound(ArrayObject)
If MatchingValue = ArrayObject(i) Then
RB = True
Exit For
End If
Next
IsExistInArray = RB
End Function
Function GetIndex(ArrayObject, MatchingValue) '返回元素所在的位置
Dim i
Dim RB, IndexArr
IndexArr = Reset()
For i = 0 To UBound(ArrayObject)
If MatchingValue = ArrayObject(i) Then
IndexArr = i
Exit For
End If
Next
GetIndex = IndexArr
End Function
Function GetIndexs(ArrayObject, MatchingValue) '返回元素所在的位置(数组)
Dim i
Dim RB, IndexArr
IndexArr = Reset()
For i = 0 To UBound(ArrayObject)
If MatchingValue = ArrayObject(i) Then
IndexArr = Add(IndexArr, i)
End If
Next
GetIndexs = IndexArr
End Function
End Class