国产素人在线观看人成视频-国产素人自拍-国产台湾夫妻在线播放-国产台湾全黄a一级毛片-国产台湾无码AV片在线观看-国产探花视频

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

asp使用AspJson轉換json數據

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

需要使用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-2024 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产麻豆放荡AV剧情演绎| 性欧美精品久久久久久久| WWW国产成人免费观看视频| 欧美男生射精高潮视频网站| 波多野结衣在线观看网址| 少妇人妻好深太紧了A片乚| 日本护士做xxxxx视频| 人妻无码AV系列久久电影| 四虎成人免费观看在线网址| 欧美激情视频一区二区免费| 中文字幕亚洲乱码熟女在线萌芽| 黄色毛片视频免费| 久久一级| 日本无码人妻一区二区免| 午夜欧美艳情视频免费看| 欧美黄区| 狠狠躁日日躁夜夜躁A片小说免费| 长篇yin荡乱合集小说免费阅读| 日本三级韩国三级在线观看a级 | 毛片黄色片| 亚洲日本欧美日韩高观看 | 韩国黄色毛片| 成人AV无码一二二区视频免费看| 囯产精品一品二区三区| 久青草国产观看在线视频| 疯狂撞击美妇雪白的大肉臀| 麻豆一区二区免费播放网站| 国产玖玖在线| 亚洲高清有码中文字| 野花社区www在线资源| 亚洲欧美日韩中文字幕在线不卡 | 琪琪五月天综合婷婷| 一级黄毛片| 激情综合丁香| 日本亚洲欧洲免费旡码 | 狠狠干老司机| 99视频精品全部免费 在线| 在线视频免费观看爽爽爽| 亚洲第六页| 久久免费看| 91欧美|