日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

asp使用AspJson轉換json數據

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

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

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調用后端接口,獲取到上面的json數據,解析輸出。

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;

   }

});?

總結

到此這篇關于asp使用AspJson轉換json數據的文章就介紹到這了。


該文章在 2024/12/12 17:07:50 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 91国产在线| 国产精品乱码一区二区视频 | 午夜看片在线观 | 日韩欧美精 | 国产精品免费一区二区三区 | 50岁退休 | 国产成在线观看免费视频成本 | 亚洲欧美另类在线区 | 免费看涩涩视频网站入口 | 亚洲一区二区三区丝袜 | 日本欧美视频在线 | 区三区在线视频 | 成人欧美国产在线 | 国语自产偷拍精品视频偷拍 | 日本视频免费 | 中文字幕国产在线 | 日本午夜免费 | 日韩在线观看网站 | 国产一级特黄aa大片在线观看 | 人片在线观看 | 日本精品a在线观看 | 二品国精品69xx | 热门事件黑料不打烊吃瓜 | 亚洲日韩在线精品茄子在线 | 色吊丝中文字幕 | 亚洲不卡精品在线观看 | 欧美日毛比比 | 午夜理论片yy44880影院 | 性满足bbwbbwbbw | 亚洲欧美精品suv | 国产亚洲欧美手机在线观看 | 午夜伦理电影网 | 成人日韩在线视频观看 | 欧美+亚洲+精品+三区 | 区二区动态图 | 国产精品成人a在线观看 | 国产高清免费在线观看 | 亚洲人成激情在线播放 | 欧美成aⅴ人高清三级 | 伦理电影在线观看 | 亚洲精品免费看日韩 |