在此答案中:https://stackoverflow.com/a/1021848/5280471建议使用“语言包装”技术通过导入 json2.js JavaScript 文件来实现 JSON 解析,如下所示:
<script language="JScript" runat="server" src='path/to/json2.js'></script>
<%
Dim myJSON
myJSON = Request.Form("myJSON") // "[ 1, 2, 3 ]"
Set myJSON = JSON.parse(myJSON) // [1,2,3]
Response.Write(myJSON) // 1,2,3
Response.Write(myJSON.[0]) // 1
Response.Write(myJSON.[1]) // 2
Response.Write(myJSON.[2]) // 3
%>
json2.js 可以在 https://github.com/douglascrockford/JSON-js/blob/master/json2.js .
找到当我尝试解释 google recapcha 返回 JSON 时,问题出现了,即:
{"success":false,"error-codes":["invalid-input-response"]}
所以,我可以访问
myJSON.success
没问题。但我不知道如何从 ASP 访问 error-codes
数组。有没有什么方法可以从ASP实现,还是我被困在那里?
我已经尝试了一些随机技巧,例如调用
MyJSON.get("error-codes")
,一些明显的语法错误,例如MyJSON("error-codes")
,MyJSON."error-codes"
,并且也希望最好的,MyJSON.error_codes
以及MyJSON.["error-codes"]
。它们都返回各自的异常、代码破坏错误。
目前,不太理想的方法是在 JS 本身中编写一个辅助函数来获取密钥。例如,我将此部分添加到 json2.js 文件的本地副本中:
if (typeof JSON.getKey !== "function") {
JSON.getKey = function (obj, key) {
return obj[key];
};
}
这样我就能做到:
' here, I mangled the array to have several elements
jsonstr = "{""success"":false,""error-codes"":[""invalid-input-response"", ""element2"", ""element3""]}"
jsonobj = JSON.parse(jsonstr)
response.write("Success is: " & jsonobj.success) ' prints 'false'
errors_array = JSON.getKey(jsonobj, "error-codes")
response.write("Error codes array has: " & errors_array) ' prints 'invalid-input-response,element2,element3
所以最终我需要一个 JavaScript 包装器来访问这些密钥。如果有人建议一种在不通过 javascript 包装的情况下优雅地访问这些键的方法,我很乐意标记为答案。