用websocket传值到后台nodejs后JSON.parse报错

补充:cocoscreator 用websocket传值到后台nodejs,获取的json字符串直接JSON.parse就报错
SyntaxError: Unexpected token H
at Object.parse

改为以下代码就可运行,但JSON.parse好像失效
conn.on(“text”,function (data) {
console.log(“data====” + data);
var str = JSON.stringify(data);
console.log(“str====” + str);
var aaa = JSON.parse(str);
console.log(“aaa ====” + aaa);
console.log(“cc ====” + aaa.cc);
});

打印出:
data===={“aa”:“11”,“cc”:“22”}
str===="{“aa”:“11”,“cc”:“22”}"
aaa ===={“aa”:“11”,“cc”:“22”}
cc ====undefined

前台传给后台的json,为什么取值aaa.cc为undefined?有大神知道吗?

你输出一下 data
或者加个断点看一下

你这个data就是string吧,干吗还要转string,直接JSON.parse

data输出是{“aa”:“11”,“cc”:“22”},是string类,但我用JSON.parse就报错
SyntaxError: Unexpected token H
at Object.parse

你好,我直接JSON.parse就报错
SyntaxError: Unexpected token H
at Object.parse

aaa.cc是什么写法

你好,我想取cc的值不是用aaa.cc吗?但前提是aaa要是json对象,但我转了好像无效

[quote=“hatasam, post:1, topic:63296”]
aaa ===={“aa”:“11”,“cc”:“22”}
[/quote]在打印看来,aaa不是字典吗

用aaa[‘cc’]取值

谢谢你的回答,但是我用aaa[‘cc’]取值,一样是undefined了

你的执行上面这句是不科学的,如果 var aaa = JSON.parse(str); 这行代码无法正确解析你所传进来的字符串data,那么data极有可能包含不可解析的乱码或者编码不对。你可以使用data = “{“aa”:“11”,“cc”:“22”}”;JSON.parse(data); 简单验证一下这个json字符串是不是可以正常被解析,然后在分析传进来的data为什么不可被解析。

可以取值啊

你的aaa都不是json对象,肯定取不出值的
json对象应该是 { aa : “11” , cc : “22” },你的是{ “aa” : “11” , “cc” : “22” }

你好,如果是直接在后台data = “{“aa”:“11”,“cc”:“22”}”;JSON.parse(data);是可以正常解析的,但是我把data = "{“aa”:“11”,“cc”:“22”}"写在前台,传过来后解析就报错,打印data传过来的值是{“aa”:“11”,“cc”:“22”},类型是string的,但是JSON.parse就报错

也可以啊

你那边到底是怎么写的

如果值在后台设置,是可以正常解析取值,但是我的值是从前台传过来的,解析就报错

你是前台传值给后台吗,传之前把字符串类型用JSON.stringify转为json字符串

是的,前台websocket 传值给后台,后台解析就报错

后台需要你传字符串呢,还是需要你传json字符串

是的,传值前我有JSON.stringify,也有直接试传字符串类的"{“aa”:“11”,“cc”:“22”}",但是后台收到的值一JSON.parse就报错
SyntaxError: Unexpected token H
at Object.parse