欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

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

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

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

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