使用VBScript循环使用JSON

时间:2017-04-01 03:57:13

标签: json vbscript

我需要解析从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!

1 个答案:

答案 0 :(得分:0)

您似乎正在使用经典ASP。这意味着您可以轻松运行JScr​​ipt而不是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中的对象。首先,我不知道你的对象结构。另一方面,这是你可以在任何地方阅读的基本内容。