订阅本栏目 RSS您所在的位置: 深山工作室 > ASP > 正文

asp操作json类,asp实现json转换

2021/10/28 9:28:44 字体: 浏览 427

调用函数主要用这两个就行了,默认都是包了双引号的,如果数字不需要引号,可设置类中的quota=true

'将一个字典或数组打印为jsonstr
Function aspjsonPrint(objs)
    dim json:Set json = new aspjsonClass
    aspjsonPrint = json.print(objs)
    set json=nothing
End Function

'将一个jsonstr转换为字典对象
Function aspjsonParse(strng)
    dim json:Set json = new aspjsonClass
    if left(strng,1)="[" then
        aspjsonParse = json.parse(strng)
    ElseIf Left(strng,1)="{" Then
        set aspjsonParse = json.parse(strng)
    Else
        Set aspjsonparse = CreateObject("scripting.dictionary")
    end if
    set json=nothing
End Function

Function NewOption()
  Dim oDic : Set oDic = CreateObject("scripting.dictionary")
  Set NewOption = oDic
End Function




Class aspjsonClass
    Dim isencode
    Dim quota

    Private Sub Class_Initialize()
        quota = True
    End Sub

    Function parse(objs)
        Dim J,isrearr,retobj
        If TypeName(objs)="String" Then
            If Left(objs,1)="[" Then isrearr = "1":objs = "{""_vbarray_"":" & objs & "}"
            Set J = parsejson(objs)
        Else
            Set J = objs
        End If
        Set retobj = json_to_dict(J)
        If isrearr = "1" Then
            parse = retobj("_vbarray_")
        Else
            Set parse = retobj
        End If
    End Function

    Function parsejson(strjson)
        On Error Resume Next : Err.clear
        Dim obj:Set obj = CreateObject("MSScriptControl.ScriptControl")
        obj.Language = "JScript"
        obj.ExecuteStatement "var result=" & strjson & ";"
        Set parsejson = obj.CodeObject.result
        Set obj=Nothing
        If Err.number <> 0 Then Set parsejson=Nothing
    End Function

    Function print(objs)
        Dim result,line(),ix, oo,vbtp,jstp,vbtpid :ix=0 : oo=""""
        vbtpid = VarType(objs)
        If vbtpid=14 Then
            vbtp = "Numeric"
        Else
            vbtp = TypeName(objs)
        End If

        If vbtp = "JScriptTypeInfo" Then
            jstp = "object"
            If isJsArray(objs) Then jstp = "array"
        End If

        If vbtp="Nothing" Then
            result = oo & "Null" & oo
        ElseIf jstp = "object" Then
            result = print_json(objs)
        ElseIf vbtp="Dictionary" Then
            For Each strKey In objs.Keys
                redim preserve line(ix)
                line(ix) = oo & strKey & oo & ":" & print(objs(strKey)):ix=ix+1
            Next
            result = "{" & Join(line,",") & "}"
        ElseIf vbtp = "Variant()" Or jstp = "array" Then
            For Each strVal In objs
                redim preserve line(ix)
                line(ix) = print(strVal):ix=ix+1
            Next
            result = "[" & Join(line,",") & "]"
        ElseIf vbtp = "String" Or vbtp="Date" Then
            result = oo & encode(objs) & oo
        ElseIf quota=False And vbtp="Null" Then
            result = "null"
        ElseIf quota=False And inArray(Array("Boolean","Integer","Double","Float","Long","Single","Numeric","Currency"),vbtp ) Then
            If vbtp="Boolean" Then objs=LCase(objs)
            result = objs
        Else
            'If vbtp="Boolean" Then objs=LCase(objs)
            result = oo & objs  & oo              
        End If
        print = result
    End Function

    Private Function json_to_dict(jsjson) 'json对象转字典
        Dim str,obj : Set obj = CreateObject("MSScriptControl.ScriptControl")
        str = str & "function json_to_dict(J){"
        str = str & "var dic = new ActiveXObject('Scripting.Dictionary'),ipos = 0;"
        str = str & "if( Object.prototype.toString.call(J) === '[object Array]' ){"
        str = str & "   for(var cur in J){"
        str = str & "   if(typeof J[cur]=='object'){"
        str = str & "       dic.add(ipos,json_to_dict(J[cur]));"
        str = str & "   }else{"
        str = str & "       dic.add(ipos,J[cur]);"
        str = str & "   }ipos++}dic = dic.Items();"
        str = str & "}else{"
        str = str & "   for (var strkey in J){"
        str = str & "   if(J[strkey]===null){"
        str = str & "       dic.add(strkey, '')"
        str = str & "   }else if(typeof J[strkey]=='object'){"
        str = str & "       dic.add(strkey, json_to_dict(J[strkey]));"
        str = str & "   }else{"
        str = str & "       dic.add(strkey, J[strkey])"
        str = str & "   }}"
        str = str & "}return dic;}"
        obj.Language = "JScript"
        obj.AddCode str
        Set json_to_dict = obj.Run("json_to_dict", jsjson)
        Set obj=Nothing
    End Function

    Private Function isJsArray(objarr)
        On Error Resume Next
        Dim str,obj : Set obj = CreateObject("MSScriptControl.ScriptControl")
        str = str & "function isArray(obj){"
        str = str & "  return Object.prototype.toString.call(obj) === '[object Array]';"
        str = str & "}"   
        obj.Language = "JScript"
        obj.AddCode str
        isJsArray = obj.Run("isArray", objarr)
        Set obj=Nothing
    End Function

    Private Function print_json(jsjson)
        On Error Resume Next : Err.clear
        Dim str,obj : Set obj = CreateObject("MSScriptControl.ScriptControl")
        str = str & "function print_json(objs){"
        str = str & "   var line = [], oo='\""',result='';"
        str = str & "   if(!objs){"
        str = str & "       result = oo + 'Null' + oo;"
        str = str & "   }else if(Object.prototype.toString.call(objs) === '[object Array]'){"
        str = str & "         for (var i in objs) {"
        str = str & "             line.push( print_json( objs[i] ) );"
        str = str & "         }result = '[' + line.join(',') + ']';"
        str = str & "   }else if(typeof(objs)=='object'){"
        str = str & "       for (var obj in objs) {"
        str = str & "           line.push(oo + obj + oo + ':' + print_json( objs[obj] ));"
        str = str & "       }result = '{' + line.join(',') + '}';"
        str = str & "   }else{"
        str = str & "       result = oo + encode(objs) + oo;"
        str = str & "   }return result;"
        str = str & "}"
        str = str & "function encode(value){"
        str = str & "   value = value.replace(/\f/g,'\\f');"
        str = str & "   value = value.replace(/\n/g,'\\n');"
        str = str & "   value = value.replace(/\r/g,'\\r');"
        str = str & "   value = value.replace(/\t/g,'\\t');"
        str = str & "   value = value.replace(/\p/g,'\\p');"
        str = str & "   value = value.replace(/""/g,'\\""');"
        str = str & "   return value;"
        str = str & "}"
        obj.Language = "JScript"
        obj.AddCode str
        print_json = obj.Run("print_json", jsjson)
        Set obj=Nothing
    End Function

    Private Function encode(ByVal value)
        value = Trim(value & "")
        value = Replace(value, "\", "\\")
        value = Replace(value, """", "\""")
        value = Replace(value, Chr(8), "\b")
        value = Replace(value, Chr(12), "\f")
        value = Replace(value, Chr(10), "\n")
        value = Replace(value, Chr(13), "\r")
        encode = Replace(value, Chr(9), "\t")
    End Function
End Class

相关阅读
CSS中的单位一览 包括宽度尺寸单位 颜色单位 角度单位
静态生成
java探测页面是否全屏,如果不是全屏则自动全屏
超级实用且不花哨的js代码大全( 1 )
uni.openLocation打开地图导航没反应解决方式(参数都设置对就是打不开)
如何加快网站访问速度
jQuery设置提交表单disabled属性所有input、button、extarea、select、checkbox、radio都生效
ASP.NET常用的三十三种实用代码(中)
共有0条关于《asp操作json类,asp实现json转换》的评论
发表评论
正在加载评论......
返回顶部发表评论
呢 称:
表 情:
内 容:
评论内容:不能超过 1000 字,需审核,请自觉遵守互联网相关政策法规。
验证码: 验证码 
网友评论声明,请自觉遵守互联网相关政策法规。

您发布的评论即表示同意遵守以下条款:
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家、社会、集体和公民的合法权益;
二、不得发布国家法律、法规明令禁止的内容;互相尊重,对自己在本站的言论和行为负责;
三、本站对您所发布内容拥有处置权。

更多信息>>栏目类别选择
百度小程序开发
微信小程序开发
微信公众号开发
uni-app
asp函数库
ASP
DIV+CSS
HTML
python
更多>>同类信息
ASP中Utf-8与Gb2312编码转换乱码问题的解决方法页面编码声明
asp显示随机密码
通过阿里云服务接口获得ip地址详细信息
iis点开后任务栏上有显示,但是窗口看不到的解决办法
RSA加密解密插件
微软Encoder加密解密函数
更多>>最新添加文章
在Android、iOS、Windows、MacOS中微信小程序的文件存放路径
python通过代码修改pip下载源让下载库飞起
python里面requests.post返回的res.text还有其它的吗
aliyun阿里云续费域名优惠口令(注册、续费都可以使用)
windows7环境下安装配置jdk
python对微信操作要用到这两个库wxpy与itchat
ASP中Utf-8与Gb2312编码转换乱码问题的解决方法页面编码声明
DW设置之后更好用 DreamweaverCS编辑GB2312与UTF-8文件在代码视图中点击鼠标错位问题的解决办法
更多>>随机抽取信息
提交按钮在自定时间内灰色不可用
CSS或js实现行间交替背景色效果
连云港旅游网
旅行社手机网站模板3
兼容ie和火狐ff的透明度设置
上海石化旅行社