asp将数组for循环输出json格式 | 熊阿哥博客

asp将数组for循环输出json格式

ASP   2025-02-27 07:53   49   0  
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<%
' 定义数组
Dim data(2)
Set data(0) = CreateObject("Scripting.Dictionary")
data(0).Add "id", 1
data(0).Add "title", "北京"
data(0).Add "caption", "首都"
Set data(1) = CreateObject("Scripting.Dictionary")
data(1).Add "id", 2
data(1).Add "title", "合肥"
data(1).Add "caption", "省会"
Set data(2) = CreateObject("Scripting.Dictionary")
data(2).Add "id", 3
data(2).Add "title", "重庆"
data(2).Add "caption", "直辖市"
' 初始化JSON字符串
Dim jsonResult
jsonResult = "["
' 循环遍历数组
Dim i, itemKey, itemValue
For i = 0 To UBound(data)
    Dim item
    Set item = data(i)
    
    ' 拼接JSON字符串
    jsonResult = jsonResult & "{"
    
    ' 遍历字典的键值对
    For Each itemKey In item.Keys
        itemValue = item(itemKey)
        
        ' 对值中的特殊字符进行转义(这里仅对引号进行简单转义)
        itemValue = Replace(itemValue, """", "\""")
        
        ' 拼接键值对
        jsonResult = jsonResult &  """" &  itemKey &  """: """ &  itemValue &  ""","
    Next
    
    ' 移除最后一个逗号并关闭对象括号
    jsonResult = Left(jsonResult, Len(jsonResult) - 1)&"}"
    
    ' 如果不是最后一个元素,添加逗号
    If i < UBound(data) Then
        jsonResult = jsonResult & ","
    End If
Next
' 移除最后一个逗号(如果有的话)并关闭数组括号(实际上在这个例子中不需要,因为我们已经确保了)
' 但为了代码的通用性,我们还是保留这一步
' jsonResult = Left(jsonResult, Len(jsonResult) - (IIf(InStrRev(jsonResult, ",") = Len(jsonResult), 1, 0)))
' 由于上面的循环已经确保了不会有多余的逗号,所以下面这行代码是多余的,但为了说明,我保留注释
' 直接关闭JSON数组(因为我们已经确保了格式正确)
' jsonResult = jsonResult   "]" (这行代码其实是多余的,因为我们在初始化时已经加了,但保留以确保完整性)
' 注意:由于我们在循环中已经确保了每个对象的正确性,并且没有添加额外的逗号,
' 所以实际上在循环结束后不需要再对jsonResult进行修改来移除多余的逗号。
' 但由于我们在初始化时已经添加了'[',并且每个对象后面都正确地添加了','(除了最后一个),
' 所以我们只需要确保在循环结束后不添加额外的',',然后直接添加']'即可(但在这个例子中已经是这样做的)。
' 为了避免混淆,我删除了上面关于移除逗号的注释和多余代码,只保留正确的部分。
' 最终,jsonResult已经是完整的JSON字符串,无需进一步修改。
' 输出JSON字符串
Response.ContentType = "application/json"
Response.Write jsonResult
%>


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。