我有一个经典的 asp (vbscript) 页面,我想在该页面上加载和合并两个 json 文件(递归地应用一个在另一个之上)。
<script language="JScript" runat="server">
function MergeJson(dest, src) {
for (var prop in src) {
if (src.hasOwnProperty(prop)) {
try {
if ( src[prop].constructor==Object ) {
dest[prop] = MergeJson(dest[prop], src[prop]); // recurse
} else {
dest[prop] = src[prop]; // update
}
} catch(e) {
dest[prop] = src[prop]; // create
}
}
}
return dest;
}
</script>
当我在客户端(在 Chrome 等中)执行上述功能时,上述功能可以正常执行。但是当我采用相同的功能并将其添加到服务器端时,它会失败。我的调用代码在 VBScript 中,如下所示:
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
我不确定为什么它没有在向服务器端代码的过渡中幸存下来。我已经检查过我正在正确加载 json 并且它能够被解析(所以它是有效的),并且执行基本上相同的客户端工作正常......我不确定如何调试代码服务器端,我在那个盒子上没有任何开发工具,它只是一个带有 IIS 7.5 的标准 Windows 服务器。