我需要解析从VBScript中的API返回的JSON。我有代码将请求发送到API并获得响应(可以提供此代码)。我只需要解析API返回的JSON记录并使其可用的代码。我需要知道JSON中每个字段的内容,以及每条记录的开始和结束时间,以便每条记录都可以存储在数据库中(不需要数据库存储代码)。
JSON模型架构如下:
{
"name": string
"id": int
"birth": date
}
如果您有自己的JSON解析库,它可能很有用。我正在使用this(可以提供)。
到目前为止我的代码是这样的:
Set objHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
objHTTP.open "GET", "http://localhost/website/api.asp", False
'Some headers:
objHTTP.setRequestHeader "CustomerAccountId", "{my_account_id}"
objHTTP.setRequestHeader "CustomerId", "{my_customer_id}"
objHTTP.setRequestHeader "DeveloperToken", "{my_API_access_Key}"
objHTTP.setRequestHeader "Password", "{my_password}"
objHTTP.setRequestHeader "UserName", "{my_user_name}"
objHTTP.send ""
'Error treatment:
If objHTTP.Status >= 400 And objHTTP.Status <= 599 Then
Response.write "Error Occurred : " & objHTTP.status & " - " & objHTTP.statusText
Response.end
Else
Response.write "Success : " & objHTTP.status & " - " & objHTTP.ResponseText
Response.end
End If
str = objHTTP.responseText
Set o = json.Decode(str)
'I need the rest of the code here!
答案 0 :(得分:0)
您似乎正在使用经典ASP。这意味着您可以轻松运行JScript而不是VBScript。
而 意味着您可以使用a proper JSON parser和简单的语法来访问生成的对象。
<script runat="server" language="JScript" src="json2.js">
<script runat="server" language="JScript">
function httpGet(url) {
var objHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP");
objHTTP.open("GET", url, false);
objHTTP.setRequestHeader("CustomerAccountId", "{my_account_id}");
objHTTP.setRequestHeader("CustomerId", "{my_customer_id}");
objHTTP.setRequestHeader("DeveloperToken", "{my_API_access_Key}");
objHTTP.setRequestHeader("Password", "{my_password}");
objHTTP.setRequestHeader("UserName", "{my_user_name}");
objHTTP.send();
// Error treatment
if (objHTTP.Status >= 400 && objHTTP.Status <= 599) {
Response.write("Error Occurred : " + objHTTP.status + " - " + objHTTP.statusText);
Response.end();
}
return objHTTP;
}
var xhr = httpGet("http://localhost/website/api.asp");
var data = JSON.parse(xhr.responseText);
// read about how to access objects and arrays in JS
</script>
您甚至可以在同一页面上混合使用VBScript和Javascript。
<script runat="server" language="VBScript">
Function HttpGet(url)
Set objHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
With objHTTP
.open "GET", url, False
'Some headers:
.setRequestHeader "CustomerAccountId", "{my_account_id}"
.setRequestHeader "CustomerId", "{my_customer_id}"
.setRequestHeader "DeveloperToken", "{my_API_access_Key}"
.setRequestHeader "Password", "{my_password}"
.setRequestHeader "UserName", "{my_user_name}"
.send ""
'Error treatment:
If .Status >= 400 And .Status <= 599 Then
Response.write "Error Occurred : " & .status & " - " & .statusText
Response.end
End If
End With
Set HttpGet = objHTTP
End Function
</script>
<script runat="server" language="JScript" src="json2.js">
<script runat="server" language="JScript">
var xhr = HttpGet("http://localhost/website/api.asp");
var data = JSON.parse(xhr.responseText);
// read about how to access objects and arrays in JS
</script>
我没有展示如何使用JS中的对象。首先,我不知道你的对象结构。另一方面,这是你可以在任何地方阅读的基本内容。