Javascript 是什么原因导致了;args";:带Json的[…]数组?

Javascript 是什么原因导致了;args";:带Json的[…]数组?,javascript,json,socket.io,Javascript,Json,Socket.io,我正在做: function uploadFile(location,slides,name){ var data = { slides: slides, name : name } io.sockets.in('conversionRoom').emit('selectSlides',data); 在另一端,结果是: { "name": "selectSlides", "args": [ { "slide

我正在做:

function uploadFile(location,slides,name){

    var data = {
        slides: slides,
        name : name
    }

    io.sockets.in('conversionRoom').emit('selectSlides',data);
在另一端,结果是:

{
  "name": "selectSlides",
  "args": [
    {
      "slides": [
        "2",
        "4"
      ]
    }
  ]
}
我希望它是:

{
  "name": "selectSlides",
      "slides": [
        "2",
        "4"
      ]
}
这样它就可以适合我的模式。 是什么导致“args”出现,我如何才能让它消失

我正在用Socketio-4net听C#中的emit

Program.socket.On("selectSlides", (fn2) =>
            {
                Program.toLog.Add("selectSlides hit");
                var jString = fn2.Json.ToJsonString();
                Program.toLog.Add(jString); 

            });

不,如果您使用的是套接字io,则无法更改它。您可以自己在没有任何库的情况下将原始数据写入套接字,但这样您就不会拥有套接字io的所有优秀功能

我不知道C#library是如何工作的,但也许它并没有为你引出理由


为什么?

我很确定这就是socket io使用的传输模式。您需要将参数放在它们自己的对象中,以便它们不会干扰其他键。例如,如果有一个名为
setName
的事件需要一个
name
,该怎么办

{
    "name": "setName",
    "args": {
      "name": "Bob"
    }
}
考虑到这些信息,您想要的结构方式将不起作用:

// wat?!
{
    "name": "setName",
    "name": "Bob"
}
因为事件的
名称
和数据键
名称
会冲突


当您使用socket io JS库时,它们会为您将参数传递给处理该事件的侦听器而对其进行抽象。如果您只是侦听原始套接字,那么您将获得原始数据,并且必须自己执行。

侦听
emit()
的处理程序是什么样子的。因为我不认为你正确地使用了那个API。@AlexWayne我用这些信息编辑了我的问题