1. 程式人生 > >asp讀取解析JSON的幾種方法

asp讀取解析JSON的幾種方法

方法一(使用MSScriptControl.ScriptControl):

<%
Dim sc4Json,arr0,json
InitScriptControl

json="{""name"":""123"",""content"":[{""id"":""1""},{""id"":""2""}]}"

Set jsonobj=getJSONObject(json)
'方法一
getJSArrayItem arr0,jsonobj.content,0
response.write jsonobj.name&"<br/>"&arr0.id&"<br/>"
'方法二
response.write sc4Json.Eval("jsonObject.name")&"<br/>"
response.write sc4Json.Eval("jsonObject.content[1].id")

Sub InitScriptControl
Set sc4Json = Server.CreateObject("MSScriptControl.ScriptControl")
sc4Json.Language = "JavaScript"
sc4Json.AddCode "var itemTemp=null;function getJSArray(arr, index){itemTemp=arr[index];}"
End Sub
Function getJSONObject( strJSON )
sc4Json.AddCode "var jsonObject = " & strJSON
Set getJSONObject = sc4Json.CodeObject.jsonObject
End Function
Sub getJSArrayItem( objDest, objJSArray, index )
On Error Resume Next
sc4Json.Run "getJSArray",objJSArray, index
Set objDest = sc4Json.CodeObject.itemTemp
If Err.number=0 Then  Exit Sub End If
objDest = sc4Json.CodeObject.itemTemp
End Sub%>

方法二:

<%
Dim sc4Json
Sub InitScriptControl
Set sc4Json = Server.CreateObject(“MSScriptControl.ScriptControl”)
sc4Json.Language = “JavaScript”
sc4Json.AddCode “var itemTemp=null;function getJSArray(arr, index){itemTemp=arr[index];}”
End Sub

Function getJSONObject(strJSON)
   sc4Json.AddCode “var jsonObject = ” & strJSON
   Set getJSONObject = sc4Json.CodeObject.jsonObject
End Function

Sub getJSArrayItem(objDest,objJSArray,index)
   On Error Resume Next
   sc4Json.Run “getJSArray”,objJSArray, index
   Set objDest = sc4Json.CodeObject.itemTemp
   If Err.number=0 Then Exit Sub
   objDest = sc4Json.CodeObject.itemTemp
End Sub

Dim strTest
strTest = “{name:”"alonely”", age:24, email:[""[email protected]

"",""[email protected]""], family:{parents:[""父親"",""母親""],toString:function(){return “”家庭成員”";}}}”
Dim objTest
Call InitScriptControl
Set objTest = getJSONObject(strTest)
%>
<%=objTest.name%& gt;的郵件地址是<%=sc4Json.eval_r(“jsonObject.email[0]“)%><BR>共有郵件地址& lt;%=objTest.email.length%>個<BR>
<%
Dim father
getJSArrayItem father, objTest.family.parents, 0
Response.Write father
%>


方法三(類庫):

<%

‘    VBS JSON 2.0.3
‘    Copyright (c) 2009
‘    Under the MIT (MIT-LICENSE.txt) license.

Const JSON_OBJECT    = 0
Const JSON_ARRAY    = 1

Class jsCore
Public Collection
Public Count
Public QuotedVars
Public Kind ‘ 0 = object, 1 = array

Private Sub Class_Initialize
Set Collection = CreateObject(“Scripting.Dictionary”)
QuotedVars = True
Count = 0
End Sub

Private Sub Class_Terminate
Set Collection = Nothing
End Sub

‘ counter
Private Property Get Counter
Counter = Count
Count = Count + 1
End Property

‘ – data maluplation
‘ — pair
Public Property Let Pair(p, v)
If IsNull(p) Then p = Counter
Collection(p) = v
End Property

Public Property Set Pair(p, v)
If IsNull(p) Then p = Counter
If TypeName(v) <> “jsCore” Then
Err.Raise &hD, “class: class”, “Incompatible types: ‘” & TypeName(v) & “‘”
End If
Set Collection(p) = v
End Property

Public Default Property Get Pair(p)
If IsNull(p) Then p = Count – 1
If IsObject(Collection(p)) Then
Set Pair = Collection(p)
Else
Pair = Collection(p)
End If
End Property
‘ — pair
Public Sub Clean
Collection.RemoveAll
End Sub

Public Sub Remove(vProp)
Collection.Remove vProp
End Sub
‘ data maluplation

‘ encoding
Function jsEncode(str)
Dim charmap(127), haystack()
charmap(8)  = “\b”
charmap(9)  = “\t”
charmap(10) = “\n”
charmap(12) = “\f”
charmap(13) = “\r”
charmap(34) = “\”"”
charmap(47) = “\/”
charmap(92) = “\\”

Dim strlen : strlen = Len(str) – 1
ReDim haystack(strlen)

Dim i, charcode
For i = 0 To strlen
haystack(i) = Mid(str, i + 1, 1)

charcode = AscW(haystack(i)) And 65535
If charcode < 127 Then
If Not IsEmpty(charmap(charcode)) Then
haystack(i) = charmap(charcode)
ElseIf charcode < 32 Then
haystack(i) = “\u” & Right(“000″ & Hex(charcode), 4)
End If
Else
haystack(i) = “\u” & Right(“000″ & Hex(charcode), 4)
End If
Next

jsEncode = Join(haystack, “”)
End Function

‘ converting
Public Function toJSON(vPair)
Select Case VarType(vPair)
Case 0    ’ Empty
toJSON = “null”
Case 1    ’ Null
toJSON = “null”
Case 7    ’ Date
‘ toJSON = “new Date(” & (vPair – CDate(25569)) * 86400000 & “)”    ’ let in only utc time
toJSON = “”"” & CStr(vPair) & “”"”
Case 8    ’ String
toJSON = “”"” & jsEncode(vPair) & “”"”
Case 9    ’ Object
Dim bFI,i
bFI = True
If vPair.Kind Then toJSON = toJSON & “[" Else toJSON = toJSON & "{"
For Each i In vPair.Collection
If bFI Then bFI = False Else toJSON = toJSON & ","

If vPair.Kind Then
toJSON = toJSON & toJSON(vPair(i))
Else
If QuotedVars Then
toJSON = toJSON & """" & i & """:" & toJSON(vPair(i))
Else
toJSON = toJSON & i & ":" & toJSON(vPair(i))
End If
End If
Next
If vPair.Kind Then toJSON = toJSON & "]” Else toJSON = toJSON & “}”
Case 11
If vPair Then toJSON = “true” Else toJSON = “false”
Case 12, 8192, 8204
toJSON = RenderArray(vPair, 1, “”)
Case Else
toJSON = Replace(vPair, “,”, “.”)
End select
End Function

Function RenderArray(arr, depth, parent)
Dim first : first = LBound(arr, depth)
Dim last : last = UBound(arr, depth)

Dim index, rendered
Dim limiter : limiter = “,”

RenderArray = “["
For index = first To last
If index = last Then
limiter = ""
End If

On Error Resume Next
rendered = RenderArray(arr, depth + 1, parent & index & "," )

If Err = 9 Then
On Error GoTo 0
RenderArray = RenderArray & toJSON(Eval("arr(" & parent & index & ")")) & limiter
Else
RenderArray = RenderArray & rendered & "" & limiter
End If
Next
RenderArray = RenderArray & "]”
End Function

Public Property Get jsString
jsString = toJSON(Me)
End Property

Sub Flush
If TypeName(Response) <> “Empty” Then
Response.Write(jsString)
ElseIf WScript <> Empty Then
WScript.Echo(jsString)
End If
End Sub

Public Function Clone
Set Clone = ColClone(Me)
End Function

Private Function ColClone(core)
Dim jsc, i
Set jsc = new jsCore
jsc.Kind = core.Kind
For Each i In core.Collection
If IsObject(core(i)) Then
Set jsc(i) = ColClone(core(i))
Else
jsc(i) = core(i)
End If
Next
Set ColClone = jsc
End Function

End Class

Function jsObject
Set jsObject = new jsCore
jsObject.Kind = JSON_OBJECT
End Function

Function jsArray
Set jsArray = new jsCore
jsArray.Kind = JSON_ARRAY
End Function

Function toJSON(val)
toJSON = (new jsCore).toJSON(val)
End Function
%>

類庫提供了兩種js型別,object和array

使用方法如下:

Set hash = jsObject() ‘如果要輸出array就寫Set hash=jsArray()
hash(“error”) = 0
hash(“url”) = fileUrl
hash.Flush
Response.End

輸出的就是json格式的字串了


相關推薦

asp讀取解析JSON方法

方法一(使用MSScriptControl.ScriptControl): <% Dim sc4Json,arr0,json InitScriptControl json="{""name"":""123"",""content"":[{""id"":""1""}

學習筆記:Android裡JSON解析方法

一、解析方法:  Android解析json有很多種方法,下面介紹三種方法:Android自帶的org.json解析、Gson解析和Jackson解析。 優缺點對比:  Android自帶的方法有點像xml的dom解析,遍歷之後根據需要的key值去取資

python爬蟲--解析網頁方法之正則表達式

ima 3.5 ref string tex href quest user lin 1、正則表達式 正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。 re 模塊使 Python 語言擁有全部的正則表達式功能。 re.match函數 re.

python爬蟲--解析網頁方法之BeautifulSoup

first div xml html find 抓取 XML 格式 速度慢 析取 一.解析器概述 soup=BeautifulSoup(response.body) 對網頁進行析取時,並未規定解析器,此時使用的是python內部默認的解析器“html.parser”

Java讀取檔案的方法

public class ReadFromFile { /** * 以位元組為單位讀取檔案,常用於讀二進位制檔案,如圖片、聲音、影像等檔案。 */ public static void readFileByBytes(String fileName) { Fil

C#讀取路徑的方法

//獲取包含清單的已載入檔案的路徑或 UNC 位置。        public static string sApplicationPath = Assembly.GetExecutingAssembly ().Location;        //result: X:

asp.net 執行js 方法

方法二: <asp:Literal ID="ltScript" runat="server"></asp:Literal> 然後使用Literal類,在後臺程式碼使用時 private void Button1_Click(object sender

安卓中讀取xml的方法(有你不知道的)

1.src目錄下,用反射機制載入:Thread.currentThread().getContextClassLoader().getResourceAsStream("xxoo.xml"),以流的方式返回 2.Assest目錄下:Activity.this.getAsse

【VBA研究】解析JSON資料的方法

iamlaosong文 網抓資料或者通過介面接收資料時,發來的資料很多是JSON格式,這是JavaScript常用的一種資料結構。對這種資料如何解析呢?先假定發來的資料如下,並針對這個資料給出幾種解析

jmeter ---json讀取方式,ArrayList循環讀取

導入 一起 .com json數據格式 jmeter ips pos processor 直接   在之前寫過提取json數據格式的文章,這次對jmeter讀取json數據格式進行整理。   舉例一個接口的response 格式如下: { "data" : {

ASP.NET中的彈出框提示基本實現方法

sys find xxxxx 文章 hello sage rtu msg CI 我們在.NET程序的開發過程中,常常需要和用戶進行信息交互,比如執行某項操作是否成功,“確定”還是“取消”,以及選擇“確定”或“取消”後是否需要跳轉到某個頁面等,下面是本人對常用對話框使用的小結

python os 設定讀取環境變數的方法

專案中的跳板機是用的使用者公私鑰鑑權的,登入跳板機需要使用的每個人的name,因此如果將封裝的MySQL或者Redis方法中傳入USERNAME作為引數的話,感覺有點傻。因此,考慮將名字寫入環境變數。 兩種方法: 1、使用os.environ.setdefault方法寫入(或者直接

asp執行sql語句、儲存過程的方法

使用connection物件 會返回一個關閉的recordset記錄集,此記錄集不要再次宣告關閉 建議在update、insert、delete時使用 strCon="provider=sqloledb;data source=servername;initial catalog

asp.net分割字串的方法

在編寫程式中,經常要用到分割的方法來處理一些字串。這裡總結了幾種常用的分割方法: 下面一一介紹一下: 1、最簡單最常用的方法,以一個指定的字元進行的分割 string s="abcdeabcdeabcde"; string[] sArray=s.Split

微信小程式解析富文字的方法

工作中有遇到過在小程式中需要解析後臺管理系統設定的富文字內容, 一,可以使用wxParse外掛解析html 使用方法 1.在github中下載 下載地址  https://github.com/icindy/wxParse/tree/master/wxParse 2.

C語言從stdin讀取一行字串的方法

C語言從stdin讀取一行字串的幾種方法 gets gets函式的標頭檔案是<stdio.h>,原型如下: char *gets(char *s); gets從stdin中讀入一行內容到s指定的buffer中,當遇到換行符或EOF時讀取結束。讀取成功時,返

讀取視訊幀的方法(自己整理)

1、第一種方法 #include "opencv2/opencv.hpp" using namespace cv; int main(int, char**) { VideoCapture cap(

Java中spring讀取配置檔案的方法

    在現實工作中,我們常常需要儲存一些系統配置資訊,大家一般都會選擇配置檔案來完成,本文根據筆者工作中用到的讀取配置檔案的方法小小總結一下,主要敘述的是spring讀取配置檔案的方法。     一、讀取xml配置檔案     (一)新建一個java bean

VTK讀取DICOM醫學圖片進行體繪製的方法

注意的是:VTK中不同的vtkVolumeMapper支援不同的資料型別。比如vtkVolumeRayCastMapper和vtkVolumeTextureMapper2D只能支援單分組VTK_UNSIGNED_CHAR和VTK_UNSIGNED_SHORT型別

ASP.NET-GridView資料繫結的方法

前提:頁面需要顯示多個表中的欄位,幾個表之間通過欄位保持聯絡 方法一:直接進行級聯查詢,並將結果集通過SqlDataAdapter填充DataSet,之後將DataTable的DataView繫結到GridView的資料來源,: //連線資料庫,並獲得返回結果; public dataset GetR