经典 ASP 和 json2.js:如何访问带有特殊字符的键?

问题描述 投票:0回答:1

在此答案中: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"]
。它们都返回各自的异常、代码破坏错误。

json asp-classic jscript jsonparser
1个回答
0
投票

目前,不太理想的方法是在 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 包装的情况下优雅地访问这些键的方法,我很乐意标记为答案。

© www.soinside.com 2019 - 2024. All rights reserved.