为什么javascript数组在从子窗口传递到父窗口后会发生变化?

为什么javascript数组在从子窗口传递到父窗口后会发生变化?,javascript,arrays,json,serialization,signalr,Javascript,Arrays,Json,Serialization,Signalr,因此,我正在做的是收集一些数据,打开一个弹出窗口,允许用户进行一些额外的选择,然后关闭弹出窗口并将选择作为数组传递回父窗口,然后将所有这些信息发送到信号器后端进行处理 问题是,在将数组从弹出窗口传递回父窗口并发送给signalr后,signalr服务器会抱怨格式化问题 [10:49:02 GMT-0400(东部夏时制)]信号器:dealshub.SubmitDealsToEngine无法执行错误:无法将当前JSON对象(例如{“名称”:“值”})反序列化为类型“System.Collection

因此,我正在做的是收集一些数据,打开一个弹出窗口,允许用户进行一些额外的选择,然后关闭弹出窗口并将选择作为数组传递回父窗口,然后将所有这些信息发送到信号器后端进行处理

问题是,在将数组从弹出窗口传递回父窗口并发送给signalr后,signalr服务器会抱怨格式化问题

[10:49:02 GMT-0400(东部夏时制)]
信号器:dealshub.SubmitDealsToEngine无法执行
错误:无法将当前JSON对象(例如{“名称”:“值”})反序列化为类型“System.Collections.Generic.List`1[System.String]”,因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。
若要修复此错误,请将JSON更改为JSON数组(例如[1,2,3]),或更改反序列化类型,使其成为可以从JSON对象反序列化的正常.NET类型(例如,不是integer之类的基元类型,也不是数组或列表之类的集合类型)
JsonObjectAttribute也可以添加到类型中,以强制它从JSON对象反序列化。 路径“0”,第1行,位置5

在visual studio中进行进一步检查和调试后,我看到
\uuu proto\uu
length
字段在传递到父窗口后消失,但我放入数组的实际信息仍然存在

目前,我正在解决这个问题,只需在父窗口中创建一个新数组,并将传递的数组中的对象推送到它上面。这将关闭信号机,并恢复原始场和长度场


想知道这里发生了什么变化,以及是否有办法让它正确通过。

它看起来非常像所描述的问题。 您可以通过如下所述向连接提供JSON序列化程序,或者通过我的答案中的任何其他方法绕过这个问题

要使用自定义JSON序列化程序,请包含以下代码:

$.connection.hub.json = {
    parse: function(text, reviver) {
        console.log("Parsing JSON");
        return window.JSON.parse(text, reviver);
    },
    stringify: function(value, replacer, space) {
        return window.JSON.stringify(value, replacer, space);
    }
};

任何想法都非常感谢!我真的难倒了这个大家伙吗?!我从没想过我会看到这一天。。。