Asp classic VBScript/Classic ASP-如何在不引发错误的情况下检查对象中是否存在属性

Asp classic VBScript/Classic ASP-如何在不引发错误的情况下检查对象中是否存在属性,asp-classic,Asp Classic,示例代码: Dim myObject Set myObject = JSON.parse(someJsonResponseFromTheServer) myFunction(myObject.someProperty) 问题: Dim myObject Set myObject = JSON.parse(someJsonResponseFromTheServer) myFunction(myObject.someProperty) 当在我的应用程序中运行类似于此的代码时,

示例代码:

Dim myObject
Set myObject = JSON.parse(someJsonResponseFromTheServer)    

myFunction(myObject.someProperty)
问题:

Dim myObject
Set myObject = JSON.parse(someJsonResponseFromTheServer)    

myFunction(myObject.someProperty)
当在我的应用程序中运行类似于此的代码时,它会从服务器抛出一个
500
错误,消息类似于“对象不支持属性或方法'someProperty'。我要解决此问题的方法如下:

Dim myObject
Set myObject = JSON.parse(someJsonResponseFromTheServer)    

If myObject.someProperty Then
    myFunction(myObject.someProperty)
End If
Dim myObject
Set myObject = JSON.parse(someJsonResponseFromTheServer)    
If CheckProperty(myObject, "someProperty") Then
    myFunction(myObject.someProperty)
End If
但是,如果我添加条件,它会在带有条件的行而不是带有方法调用的行上抛出相同的错误

我的问题:

Dim myObject
Set myObject = JSON.parse(someJsonResponseFromTheServer)    

myFunction(myObject.someProperty)

在ASP Classic中,如何在不引发错误的情况下检测对象中是否存在属性?

遗憾的是,这通常意味着“on error”语句

Private Function TestProperty()
暗淡的成功
成功=错误
出错时继续下一步
'在此处设置属性
成功=(Err.Number=0)
错误转到0
TestProperty=Success
退出功能

假设您包含一些runat=“server”js文件,为您提供JSON解析器,那么
JSON.parse
将返回一个Javascript对象

如果上述假设是正确的,则以下各项应起作用:

If myObject.hasOwnProperty("someProperty") Then 
    myFunction(myObject.someProperty) 
End If 

经典ASP的一个好处是,它允许您在同一页面中同时运行VBScript和JScript,因此您可以同时使用这两种功能

首先,将此JScript代码块添加到现有的
.asp
文件中:

<script language="JScript" runat="server">
function CheckProperty(obj, propName) {
    return (typeof obj[propName] != "undefined");
}
</script>

使用泛型类对象对其进行了测试,效果良好-JScript是在VBScript访问之前编译的。

本机ASP没有json解析器。您使用什么将json实现导入ASP?@AnthonyWJones,问得好。考虑到我刚开始这个项目(和工作)像3天前一样,我不太清楚他们是怎么做的。有两个用于ASP经典实现的JSON。来自JSON.org:和。最后一个不再维护。@AnthonyWJones像VBScript一样,JavaScript也可以在服务器端运行,就像使用经典ASP引擎的Node.js一样。不过要小心,结合JavaScript和VBScript.T请看一下SO线程,了解一些非常重要的注意事项。@Guido只要VBScript是默认值,它就可以正常工作:“首先解析并执行非默认语言脚本。。。在解析和执行默认语言脚本时,以前的语言脚本创建的所有全局标识符都将添加到脚本环境中,因此可以从内联代码中使用“影子巫师,谢谢,这真的很好用。”。我想指出李维在将两者结合时可能遇到的问题。六年后,这仍然是黄金。非常感谢。