的JSON2.asp
實現不具有「負荷數據庫」功能,這意味着你將不得不實施一些東西到ADODB.Recordset
轉換成JSON結構自己。
如果您願意使用不同的腳本,則在GitHub上有一個實現方案RCDMK,它有一個LoadRecordset()
方法,它被稱爲JSON object class 3.5.3。
這使得從ADODB.Recordset
加載數據非常簡單。
<!-- #include virtual="/jsonObject.class.asp" -->
<%
Response.LCID = 2057
'...
Dim rs: Set rs = conn.execute(strQuery)
Dim JSON: Set JSON = New JSONobject
Call JSON.LoadRecordset(rs)
Call Response.Clear()
Response.ContentType = "application/json"
Call JSON.Write()
%>
代碼已經被使用斷開連接的記錄測試,這裏的...
表示假定代碼來設置您的記錄,連接等
值得一提的,你可以寫自己,這是不是一個巨大的通過跳轉到ADODB.Recordset
並構建JSON字符串。但是,我會因爲幾個原因而反對。
- 這是一個耗時的練習。
- 很容易錯過(例如在生成輸出時檢查數字數據類型)。
- 根據編碼方式的不同,可能會使維護(例如,如果不直接從記錄集註入屬性名稱,而是選擇「硬編碼」它們),會變得很尷尬。
- 爲什麼reinvent the wheel?處理這裏提出的問題有很多公開的實現。無可否認,有些人比其他人好,但需要五分鐘才能包括他們並試一試。
只是爲了完整性這裏是使用斷開連接的記錄
<!-- #include virtual="/jsonObject.class.asp" -->
<%
Call init()
Sub init()
Dim fields: fields = Array(Array("title", adVarChar, 50), Array("firstname", adVarChar, 50), Array("lastname", adVarChar, 50), Array("age", adInteger, 4))
Dim rs: Set rs = Server.CreateObject("ADODB.Recordset")
Call InsertRow(rs, fields, Array("Mr", "Joe", "Bloggs", 31))
Call InsertRow(rs, fields, Array("Mr", "John", "Smith", 42))
Response.LCID = 2057
Dim JSON: Set JSON = New JSONobject
Call JSON.LoadRecordset(rs)
Call Response.Clear()
Response.ContentType = "application/json"
Call JSON.Write()
End Sub
Sub InsertRow(ByVal rs, fields, values)
With rs
If rs.State <> adStateOpen Then
For Each fld In fields
Call .Fields.Append(fld(0), fld(1), fld(2))
Next
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
Call .Open()
End If
Call .AddNew()
For i = 0 To UBound(fields, 1)
.Fields(fields(i)(0)).Value = values(i)
Next
Call .Update()
Call .MoveFirst()
End With
End Sub
%>
輸出我的本地測試代碼:
{"data":[{"title":"Mr","firstname":"Joe","lastname":"Bloggs","age":31},{"title":"Mr","firstname":"John","lastname":"Smith","age":42}]}
你可以在調用'JSON.Write()'之前顯示一個實際編輯記錄集的例子嗎?我似乎無法弄清楚如何循環瀏覽JSON並將字段移除/添加到每個「行」。在實際循環LoadRecordset的結果時,文檔沒有顯示這個例子。 – tylerl
對不起@tylerl,假設你已經知道如何使用'ADODB.Recordset'來添加,更新等。我在測試例子中給出的例子是使用「斷開連接的記錄集」,沒有太大的不同,但允許我加載樣本數據作爲測試。我以爲你會返回已經存儲在數據庫中的數據,準備輸出到JSON。 – Lankymart
所以這是不會工作的,除非Recordset已經完全按照我想要的方式來自數據庫? – tylerl