合并两个json数组、服务器端javascript、经典asp

合并两个json数组、服务器端javascript、经典asp,json,asp-classic,vbscript,jscript,Json,Asp Classic,Vbscript,Jscript,我有一个经典的asp(vbscript)页面,我想加载并合并两个json文件(递归地应用其中一个) 我不太清楚为什么它在向服务器端代码过渡的过程中没有幸存下来。我已经检查了json是否正确加载,是否能够进行解析(因此它是有效的),并且基本上执行相同的客户端工作正常。。。我不确定如何调试代码服务器端,我没有任何开发工具,它只是带有IIS 7.5的标准windows服务器。在VBScript中,如果要将对象引用分配给变量,必须使用语句。更改此行: Dim newSettings : newSetti

我有一个经典的asp(vbscript)页面,我想加载并合并两个json文件(递归地应用其中一个)


我不太清楚为什么它在向服务器端代码过渡的过程中没有幸存下来。我已经检查了json是否正确加载,是否能够进行解析(因此它是有效的),并且基本上执行相同的客户端工作正常。。。我不确定如何调试代码服务器端,我没有任何开发工具,它只是带有IIS 7.5的标准windows服务器。

在VBScript中,如果要将对象引用分配给变量,必须使用语句。更改此行:

Dim newSettings : newSettings = MergeJson(DefaultSettings, Settings)


如果不设置
Set
,VBScript通常通过调用默认属性(如果存在)将右侧强制为值类型。对于
MergeJson
函数,JScript对象的默认属性似乎是函数,默认情况下,函数返回字符串“[object typename]”。这就解释了当您不使用
设置

定义“失败”时,“[object object]”被分配给
新闻设置的原因:是否有错误?输出是否不是您所期望的?为什么呢另外,所定义的
GetSettingsJSON
子函数和所调用的
GetJSON
函数之间是否应该有区别,或者这是一个输入错误?此外,您还可以将变量
DefualtSettings
调暗(请注意,“default”拼写错误),但在倒数第二行中,您引用了
DefaultSettings
。标准的建议是总是在每个脚本的顶部使用,以捕捉像这样的打字错误。别管打字错误,我一直都在打字,结果就是这样。当我把变量放到SE中时,我重命名了它们,因为你会斥责我使用完全没有描述性的“a、b和c”作为变量和函数名,这也是我在工作时做的。失败:表示“当
DefaultSettings
的值被
MySettings
覆盖时,它会向vbscript返回一个字符串[object object],但从javascript调用时它不会这样做,您会看到
dest
作为一个对象。干杯,回vbscript时,我总是忘记“Set”的正确用法。
Sub GetJSON(byval path, byref oJSON)
    Dim str : str = GetFileString(Server.MapPath(path), "")
    If str = "" Then str = "{}" ' empty object
    Set oJSON = JSON.parse(join(array(str))) ' Douglas Crockford's json2.js
End Sub

Dim DefualtSettings : Call GetJSON("/defaults/settings.json", DefaultSettings)
Dim MySettings : Call GetJSON("/my/settings.json", MySettings)
Dim newSettings : newSettings = MergeJson(DefaultSettings, Settings)
response.write JSON.stringify(newSettings, null, 4) ' see it
Dim newSettings : newSettings = MergeJson(DefaultSettings, Settings)
Dim newSettings : Set newSettings = MergeJson(DefaultSettings, Settings)