如何解析传递给js服务器的JSON对象的字符串数据?

时间:2016-04-30 18:00:20

标签: json node.js socket.io

这是我的客户端基于Android代码(libgdx) -

   public static void updateTheServer() {
   JSONObject data = new JSONObject();
    try {
        data.put("roomName", tf.getText()); //tf is a textbox i take input from
        socket.emit("joinRoom",data);
    } catch (JSONException e) {
        Gdx.app.log("SOCKET.IO", "Error sending room name data");
    }
}

这是我在javascript / nodejs上的服务器代码 -

         var clientInfo={}; //key-Value Pairs
         var roomName;
    io.on('connection', function (socket){
    socket.emit('socketID',{id:socket.id});
    socket.on('joinRoom',function(data){
             data.id=socket.id;
             console.log("Got room name!");
             if(!roomName===null){
             roomName=data.JSON.parse(roomName);
             clientInfo[socket.id]=roomName;
             socket.join(roomName);

    }

});

我在命令窗口中遇到的错误是 - " TypeError:无法读取属性' roomName'在Socket中未定义。

你能告诉我如何解决这个问题吗?我的目标是从客户那里获得房间名称,这样我就能让他们加入那个特定的房间!

我很困惑如何在平台不同时实现这一点,客户端是java,服务器是js。

1 个答案:

答案 0 :(得分:0)

你只是检查roomName是否为null,javascript的东西是它有多个类似null的类型。未定义的是其中一个是roomName设置的,roomName未定义。你只是检查它是否为空,这不是。它未定义。

您在顶部创建roomName属性,但您从不为其指定任何内容,因此未定义。将您的if语句更改为:

// This will return false if roomName is null, undefined or 0.
if(!roomName) {
    // your code
}

// or alternatively, change the assignment of roomName to
roomName = null;

但我建议在尝试使用之前为roomName分配一些内容。