JSON.parse()javascript意外标记{
我得到以下错误:JSON.parse()javascript意外标记{,java,json,Java,Json,我得到以下错误: undefined:2 {"data":{"my":88.43869018554688,"mx":-293.594970703125},"id":2} ^ SyntaxError: Unexpected token { at Object.parse (native) at Socket.<anonymous>(/home/lchost/fishy.io/server/custom_modules/game.js:34:23) android客户端
undefined:2
{"data":{"my":88.43869018554688,"mx":-293.594970703125},"id":2}
^
SyntaxError: Unexpected token {
at Object.parse (native)
at Socket.<anonymous>(/home/lchost/fishy.io/server/custom_modules/game.js:34:23)
android客户端上的代码:
public class TouchEventObject implements JSONable {
public float mx;
public float my;
public TouchEventObject(float mx, float my) {
this.mx = mx;
this.my = my;
}
@Override
public JSONObject toJSON() {
JSONObject json = new JSONObject();
try {
json.put("mx", mx);
json.put("my", my);
} catch(Exception e) {};
return json;
}
}
以及:
@覆盖
公共布尔onTouchEvent(运动事件){
如果(世界!=null&&me!=null&&canvas\u width!=-1&&canvas\u height!=-1){
Camera=Camera.getInstance();
float x=camera.getX()=world.WIDTH-canvas_WIDTH?((world.WIDTH-canvas_WIDTH)+event.getX())-me.x*camera.getScale():event.getX()-canvas_WIDTH/2;
float y=camera.getY()=world.HEIGHT-canvas_HEIGHT?((world.HEIGHT-canvas_HEIGHT)+event.getY())-me.y*camera.getScale():event.getY()-canvas_HEIGHT/2;
if(client!=null&&client.isConnected()){
JSONObject json=新的TouchEventObject(x,y).toJSON();
sendMessage(PacketType.MOUSEMOVE,json);
}
}
返回true;
}
你知道什么会导致这个问题吗???
这真的很奇怪,因为有好几次这不会抛出错误,但在3或4次成功处理套接字传输后,它确实失败了。
提前谢谢你事实上@Llama先生是对的。我的代码在一条消息中发送了两个JSON…我将
线程。sleep(100)
放入处理触摸事件的代码中:
@Override
public boolean onTouchEvent(MotionEvent event) {
if(world != null && me != null && canvas_width != -1 && canvas_height != -1) {
Camera camera = Camera.getInstance();
float x = camera.getX() <= 0 ? event.getX() - me.x*camera.getScale() : camera.getX() >= world.WIDTH - canvas_width ? ((world.WIDTH - canvas_width) + event.getX()) - me.x*camera.getScale() : event.getX() - canvas_width/2;
float y = camera.getY() <= 0 ? event.getY() - me.y*camera.getScale() : camera.getY() >= world.HEIGHT - canvas_height ? ((world.HEIGHT - canvas_height) + event.getY()) - me.y*camera.getScale() : event.getY() - canvas_height/2;
if (client != null && client.isConnected()) {
JSONObject json = new TouchEventObject(x, y).toJSON();
client.sendMessage(PacketType.MOUSEMOVE, json);
try {
Thread.sleep(100);
} catch(Exception e) {}
}
}
return true;
}
@覆盖
公共布尔onTouchEvent(运动事件){
如果(世界!=null&&me!=null&&canvas\u width!=-1&&canvas\u height!=-1){
Camera=Camera.getInstance();
float x=camera.getX()=world.WIDTH-canvas_WIDTH?((world.WIDTH-canvas_WIDTH)+event.getX())-me.x*camera.getScale():event.getX()-canvas_WIDTH/2;
float y=camera.getY()=world.HEIGHT-canvas_HEIGHT?((world.HEIGHT-canvas_HEIGHT)+event.getY())-me.y*camera.getScale():event.getY()-canvas_HEIGHT/2;
if(client!=null&&client.isConnected()){
JSONObject json=新的TouchEventObject(x,y).toJSON();
sendMessage(PacketType.MOUSEMOVE,json);
试一试{
睡眠(100);
}捕获(例外e){}
}
}
返回true;
}
为什么要用[javascript]标记它?…JSON字符串+JSON字符串!=有效的JSON。你不能一次只解析两个JSON字符串。console.log(data.toString());
1.因为问题出在javascript部分(节点JS服务器)2.我不明白你的意思,你如何解决它?3.输出是:“数据:{”数据:{”数据:{”数据:{“数据:{”数据:{”数据:{“数据:{”数据:{“数据:{”数据:{”数据:{“数据:{”数据:{”数据:{”数据:{“数据:{”数据:{”数据:{“数据:{”99.99.99.99.99.99.97.97.97.97192192192192383838383838383838383838383838383838383838383838382828282828282828282828282828282828125.125.125,”,”,”数据:{,,,,,,{{“数据:{“数据:{”数据:{“数据:{”数据:{”数据:{”数据:{”数据:{”数据:{”数据:{“数据:{”数据:{{”数据:{”数据:{{”数据:{数据:{“数据:{”数据:{{{:2}{“数据”:{“我的”:88.43869018554688,“mx”:-293.5949703125},“id”:2}
问题是,5次之后,它的解析结果很好,然后就没有了。
@Override
public boolean onTouchEvent(MotionEvent event) {
if(world != null && me != null && canvas_width != -1 && canvas_height != -1) {
Camera camera = Camera.getInstance();
float x = camera.getX() <= 0 ? event.getX() - me.x*camera.getScale() : camera.getX() >= world.WIDTH - canvas_width ? ((world.WIDTH - canvas_width) + event.getX()) - me.x*camera.getScale() : event.getX() - canvas_width/2;
float y = camera.getY() <= 0 ? event.getY() - me.y*camera.getScale() : camera.getY() >= world.HEIGHT - canvas_height ? ((world.HEIGHT - canvas_height) + event.getY()) - me.y*camera.getScale() : event.getY() - canvas_height/2;
if (client != null && client.isConnected()) {
JSONObject json = new TouchEventObject(x, y).toJSON();
client.sendMessage(PacketType.MOUSEMOVE, json);
}
}
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(world != null && me != null && canvas_width != -1 && canvas_height != -1) {
Camera camera = Camera.getInstance();
float x = camera.getX() <= 0 ? event.getX() - me.x*camera.getScale() : camera.getX() >= world.WIDTH - canvas_width ? ((world.WIDTH - canvas_width) + event.getX()) - me.x*camera.getScale() : event.getX() - canvas_width/2;
float y = camera.getY() <= 0 ? event.getY() - me.y*camera.getScale() : camera.getY() >= world.HEIGHT - canvas_height ? ((world.HEIGHT - canvas_height) + event.getY()) - me.y*camera.getScale() : event.getY() - canvas_height/2;
if (client != null && client.isConnected()) {
JSONObject json = new TouchEventObject(x, y).toJSON();
client.sendMessage(PacketType.MOUSEMOVE, json);
try {
Thread.sleep(100);
} catch(Exception e) {}
}
}
return true;
}