公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

asp使用AspJson轉(zhuǎn)換json數(shù)據(jù)

admin
2024年12月12日 17:7 本文熱度 1049

需要使用json數(shù)據(jù)的場(chǎng)景很多,那么asp中如何操作json數(shù)據(jù)呢?asp與json格式又如何交互呢?本文介紹使用AspJson轉(zhuǎn)換為json格式數(shù)據(jù)輸出,以及解析json數(shù)據(jù)。

aspJSON1.17.asp文件

<%

'Februari 2014 - Version 1.17 by Gerrit van Kuipers

Class aspJSON

    Public data

    Private p_JSONstring

    private aj_in_string, aj_in_escape, aj_i_tmp, aj_char_tmp, aj_s_tmp, aj_line_tmp, aj_line, aj_lines, aj_currentlevel, aj_currentkey, aj_currentvalue, aj_newlabel, aj_XmlHttp, aj_RegExp, aj_colonfound

  

    Private Sub Class_Initialize()

        Set data = Collection()

        Set aj_RegExp = new regexp

        aj_RegExp.Pattern = "\s{0,}(\S{1}[\s,\S]*\S{1})\s{0,}"

        aj_RegExp.Global = False

        aj_RegExp.IgnoreCase = True

        aj_RegExp.Multiline = True

    End Sub

  

    Private Sub Class_Terminate()

        Set data = Nothing

        Set aj_RegExp = Nothing

    End Sub

  

    Public Sub loadJSON(inputsource)

        inputsource = aj_MultilineTrim(inputsource)

        If Len(inputsource) = 0 Then Err.Raise 1, "loadJSON Error", "No data to load."

         

        select case Left(inputsource, 1)

            case "{", "["

            case else

                Set aj_XmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")

                aj_XmlHttp.open "GET", inputsource, False

                aj_XmlHttp.setRequestHeader "Content-Type", "text/json"

                aj_XmlHttp.setRequestHeader "CharSet", "UTF-8"

                aj_XmlHttp.Send

                inputsource = aj_XmlHttp.responseText

                set aj_XmlHttp = Nothing

        end select

  

        p_JSONstring = CleanUpJSONstring(inputsource)

        aj_lines = Split(p_JSONstring, Chr(13) & Chr(10))

  

        Dim level(99)

        aj_currentlevel = 1

        Set level(aj_currentlevel) = data

        For Each aj_line In aj_lines

            aj_currentkey = ""

            aj_currentvalue = ""

            If Instr(aj_line, ":") > 0 Then

                aj_in_string = False

                aj_in_escape = False

                aj_colonfound = False

                For aj_i_tmp = 1 To Len(aj_line)

                    If aj_in_escape Then

                        aj_in_escape = False

                    Else

                        Select Case Mid(aj_line, aj_i_tmp, 1)

                            Case """"

                                aj_in_string = Not aj_in_string

                            Case ":"

                                If Not aj_in_escape And Not aj_in_string Then

                                    aj_currentkey = Left(aj_line, aj_i_tmp - 1)

                                    aj_currentvalue = Mid(aj_line, aj_i_tmp + 1)

                                    aj_colonfound = True

                                    Exit For

                                End If

                            Case "\"

                                aj_in_escape = True

                        End Select

                    End If

                Next

                if aj_colonfound then

                    aj_currentkey = aj_Strip(aj_JSONDecode(aj_currentkey), """")

                    If Not level(aj_currentlevel).exists(aj_currentkey) Then level(aj_currentlevel).Add aj_currentkey, ""

                end if

            End If

            If right(aj_line,1) = "{" Or right(aj_line,1) = "[" Then

                If Len(aj_currentkey) = 0 Then aj_currentkey = level(aj_currentlevel).Count

                Set level(aj_currentlevel).Item(aj_currentkey) = Collection()

                Set level(aj_currentlevel + 1) = level(aj_currentlevel).Item(aj_currentkey)

                aj_currentlevel = aj_currentlevel + 1

                aj_currentkey = ""

            ElseIf right(aj_line,1) = "}" Or right(aj_line,1) = "]" or right(aj_line,2) = "}," Or right(aj_line,2) = "]," Then

                aj_currentlevel = aj_currentlevel - 1

            ElseIf Len(Trim(aj_line)) > 0 Then

                if Len(aj_currentvalue) = 0 Then aj_currentvalue = aj_line

                aj_currentvalue = getJSONValue(aj_currentvalue)

  

                If Len(aj_currentkey) = 0 Then aj_currentkey = level(aj_currentlevel).Count

                level(aj_currentlevel).Item(aj_currentkey) = aj_currentvalue

            End If

        Next

    End Sub

  

    Public Function Collection()

        set Collection = Server.CreateObject("Scripting.Dictionary")

    End Function

  

    Public Function AddToCollection(dictobj)

        if TypeName(dictobj) <> "Dictionary" then Err.Raise 1, "AddToCollection Error", "Not a collection."

        aj_newlabel = dictobj.Count

        dictobj.Add aj_newlabel, Collection()

        set AddToCollection = dictobj.item(aj_newlabel)

    end function

  

    Private Function CleanUpJSONstring(aj_originalstring)

        aj_originalstring = Replace(aj_originalstring, Chr(13) & Chr(10), "")

        aj_originalstring = Mid(aj_originalstring, 2, Len(aj_originalstring) - 2)

        aj_in_string = False : aj_in_escape = False : aj_s_tmp = ""

        For aj_i_tmp = 1 To Len(aj_originalstring)

            aj_char_tmp = Mid(aj_originalstring, aj_i_tmp, 1)

            If aj_in_escape Then

                aj_in_escape = False

                aj_s_tmp = aj_s_tmp & aj_char_tmp

            Else

                Select Case aj_char_tmp

                    Case "\" : aj_s_tmp = aj_s_tmp & aj_char_tmp : aj_in_escape = True

                    Case """" : aj_s_tmp = aj_s_tmp & aj_char_tmp : aj_in_string = Not aj_in_string

                    Case "{", "["

                        aj_s_tmp = aj_s_tmp & aj_char_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10))

                    Case "}", "]"

                        aj_s_tmp = aj_s_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10)) & aj_char_tmp

                    Case "," : aj_s_tmp = aj_s_tmp & aj_char_tmp & aj_InlineIf(aj_in_string, "", Chr(13) & Chr(10))

                    Case Else : aj_s_tmp = aj_s_tmp & aj_char_tmp

                End Select

            End If

        Next

        CleanUpJSONstring = ""

        aj_s_tmp = split(aj_s_tmp, Chr(13) & Chr(10))

        For Each aj_line_tmp In aj_s_tmp

            aj_line_tmp = replace(replace(aj_line_tmp, chr(10), ""), chr(13), "")

            CleanUpJSONstring = CleanUpJSONstring & aj_Trim(aj_line_tmp) & Chr(13) & Chr(10)

        Next

    End Function

  

    Private Function getJSONValue(ByVal val)

        val = Trim(val)

        If Left(val,1) = ":"  Then val = Mid(val, 2)

        If Right(val,1) = "," Then val = Left(val, Len(val) - 1)

        val = Trim(val)

        Select Case val

            Case "true"  : getJSONValue = True

            Case "false" : getJSONValue = False

            Case "null" : getJSONValue = Null

            Case Else

                If (Instr(val, """") = 0) Then

                    If IsNumeric(val) Then

                        getJSONValue = CDbl(val)

                    Else

                        getJSONValue = val

                    End If

                Else

                    If Left(val,1) = """" Then val = Mid(val, 2)

                    If Right(val,1) = """" Then val = Left(val, Len(val) - 1)

                    getJSONValue = aj_JSONDecode(Trim(val))

                End If

        End Select

    End Function

  

    Private JSONoutput_level

    Public Function JSONoutput()

        dim wrap_dicttype, aj_label

        JSONoutput_level = 1

        wrap_dicttype = "[]"

        For Each aj_label In data

             If Not aj_IsInt(aj_label) Then wrap_dicttype = "{}"

        Next

        JSONoutput = Left(wrap_dicttype, 1) & Chr(13) & Chr(10) & GetDict(data) & Right(wrap_dicttype, 1)

    End Function

  

    Private Function GetDict(objDict)

        dim aj_item, aj_keyvals, aj_label, aj_dicttype

        For Each aj_item In objDict

            Select Case TypeName(objDict.Item(aj_item))

                Case "Dictionary"

                    GetDict = GetDict & Space(JSONoutput_level * 4)

                    aj_dicttype = "[]"

                    For Each aj_label In objDict.Item(aj_item).Keys

                         If Not aj_IsInt(aj_label) Then aj_dicttype = "{}"

                    Next

                    If aj_IsInt(aj_item) Then

                        GetDict = GetDict & (Left(aj_dicttype,1) & Chr(13) & Chr(10))

                    Else

                        GetDict = GetDict & ("""" & aj_JSONEncode(aj_item) & """" & ": " & Left(aj_dicttype,1) & Chr(13) & Chr(10))

                    End If

                    JSONoutput_level = JSONoutput_level + 1

                    aj_keyvals = objDict.Keys

                    GetDict = GetDict & (GetSubDict(objDict.Item(aj_item)) & Space(JSONoutput_level * 4) & Right(aj_dicttype,1) & aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),"" , ",") & Chr(13) & Chr(10))

                Case Else

                    aj_keyvals =  objDict.Keys

                    GetDict = GetDict & (Space(JSONoutput_level * 4) & aj_InlineIf(aj_IsInt(aj_item), "", """" & aj_JSONEncode(aj_item) & """: ") & WriteValue(objDict.Item(aj_item)) & aj_InlineIf(aj_item = aj_keyvals(objDict.Count - 1),"" , ",") & Chr(13) & Chr(10))

            End Select

        Next

    End Function

  

    Private Function aj_IsInt(val)

        aj_IsInt = (TypeName(val) = "Integer" Or TypeName(val) = "Long")

    End Function

  

    Private Function GetSubDict(objSubDict)

        GetSubDict = GetDict(objSubDict)

        JSONoutput_level= JSONoutput_level -1

    End Function

  

    Private Function WriteValue(ByVal val)

        Select Case TypeName(val)

            Case "Double", "Integer", "Long": WriteValue = val

            Case "Null"                     : WriteValue = "null"

            Case "Boolean"                  : WriteValue = aj_InlineIf(val, "true", "false")

            Case Else                       : WriteValue = """" & aj_JSONEncode(val) & """"

        End Select

    End Function

  

    Private Function aj_JSONEncode(ByVal val)

        val = Replace(val, "\", "\\")

        val = Replace(val, """", "\""")

        'val = Replace(val, "/", "\/")

        val = Replace(val, Chr(8), "\b")

        val = Replace(val, Chr(12), "\f")

        val = Replace(val, Chr(10), "\n")

        val = Replace(val, Chr(13), "\r")

        val = Replace(val, Chr(9), "\t")

        aj_JSONEncode = Trim(val)

    End Function

  

    Private Function aj_JSONDecode(ByVal val)

        val = Replace(val, "\""", """")

        val = Replace(val, "\\", "\")

        val = Replace(val, "\/", "/")

        val = Replace(val, "\b", Chr(8))

        val = Replace(val, "\f", Chr(12))

        val = Replace(val, "\n", Chr(10))

        val = Replace(val, "\r", Chr(13))

        val = Replace(val, "\t", Chr(9))

        aj_JSONDecode = Trim(val)

    End Function

  

    Private Function aj_InlineIf(condition, returntrue, returnfalse)

        If condition Then aj_InlineIf = returntrue Else aj_InlineIf = returnfalse

    End Function

  

    Private Function aj_Strip(ByVal val, stripper)

        If Left(val, 1) = stripper Then val = Mid(val, 2)

        If Right(val, 1) = stripper Then val = Left(val, Len(val) - 1)

        aj_Strip = val

    End Function

  

    Private Function aj_MultilineTrim(TextData)

        aj_MultilineTrim = aj_RegExp.Replace(TextData, "$1")

    End Function

  

    private function aj_Trim(val)

        aj_Trim = Trim(val)

        Do While Left(aj_Trim, 1) = Chr(9) : aj_Trim = Mid(aj_Trim, 2) : Loop

        Do While Right(aj_Trim, 1) = Chr(9) : aj_Trim = Left(aj_Trim, Len(aj_Trim) - 1) : Loop

        aj_Trim = Trim(aj_Trim)

    end function

End Class

%>

示例一—輸出json

<!--#include virtual="/aspJSON1.17.asp" -->

<%

Set oJSON = New aspJSON


With oJSON.data

    .Add "familyName", "Smith"                      'Create value

    .Add "familyMembers", oJSON.Collection()

    With oJSON.data("familyMembers")

        .Add 0, oJSON.Collection()                  'Create object

        With .item(0)

            .Add "firstName", "John"

            .Add "age", 41

        End With

        .Add 1, oJSON.Collection()

        With .item(1)

            .Add "firstName", "Suzan"

            .Add "age", 38

            .Add "interests", oJSON.Collection()    'Create array

            With .item("interests")

                .Add 0, "Reading"

                .Add 1, "Tennis"

                .Add 2, "Painting"

            End With

        End With

        .Add 2, oJSON.Collection()

        With .item(2)

            .Add "firstName", "John Jr."

            .Add "age", 2.5

        End With

    End With

End With

 

Response.Write oJSON.JSONoutput()                   'Return json string

%>

示例二—JS讀取Json

前端js使用ajax調(diào)用后端接口,獲取到上面的json數(shù)據(jù),解析輸出。

var postData="Action=Announce";

//alert(postData)

digtalMessage="";

digtalMessageAll="";


$.ajax({

   type: "GET",

   url: "/OKOA/CN/AjaxInfo.asp",

   data: postData,

   success: function(msg){

    //alert( "Data Saved: " + msg );

     

    var obj = jQuery.parseJSON(msg);

    $.each(obj,function(idx,item){     

       //alert(item.activityBeginTime)

        digtalMessage=DigitalTime1(item.Title,item.Title,item.activityBeginTime,item.activityEndTime);

         

        digtalMessageAll=digtalMessageAll+" <a class=\"Default\" onClick=\"OpenWin('/OKOA/Announce.asp?ID="+item.ID+"','Annonce_"+item.ID+"')\" href=\"#\">"+digtalMessage+"</a>;"

    })

    document.getElementById("LiveClock1").innerHTML=digtalMessageAll;

   }

});?

總結(jié)

到此這篇關(guān)于asp使用AspJson轉(zhuǎn)換json數(shù)據(jù)的文章就介紹到這了。


該文章在 2024/12/12 17:07:50 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 91久久精品国产亚 | av每日更新在线观看 | 国产成人无码一区二区三区 | 国产午夜精品片一区二区三区 | 国产精品va在线观看无码电影 | 国产三级国产精品国产av | 国精产品一品二品国精破解 | a级午夜毛片免费一区二区 a级一级 | 国产在线视频一区二区高清乱码99 | 国产在线观看免费av站 | 岛国大片网站在线观看 | 国产熟女真实乱精品视频 | 成人无码精品一区二区三区亚洲 | 国产福利第一视频在线播放 | av综合影院 | 91精品一区二区三区在线播放 | 国产做a爰片毛片a片美国 | 激情国产原创在线观看 | 国产麻豆一区二区三区在线蜜桃 | 91人妻无码精品一区二区毛片 | 国产成人精品午夜 | 国产专区日韩专区 | 国产日韩一区二区在线观看 | 精品国内自产拍在线观看视频 | 国产区图片区小说区亚洲区 | 国产一区亚洲二区日韩三区 | 国精无码欧精品 | 国产日韩欧美精品另类一区二区 | 精品无码久久久久国产动漫3d | 91久久精品无码一区二区免费 | 国产91色综合 | 国产美女精品网站在线看 | a人片在线观看 | 国产福利片无码 | 国产黄色精品观看 | 成人精品视频一区二区 | 99久久国产精品亚洲综合看片 | 国内偷视频在线观看 | 精品人妻无码区在线视频 | 国产精品毛片av一区二区三 | 国色天香第01集在线播放 |