Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON.parse意外令牌节点_Javascript_Json_Node.js - Fatal编程技术网

Javascript JSON.parse意外令牌节点

Javascript JSON.parse意外令牌节点,javascript,json,node.js,Javascript,Json,Node.js,使用client.on('data',function(data){})节点套接字传入以下数据: { "jsonrpc": "2.0", "result": { "Name": "MyGain", "Controls": [ { "Name": "gain", "String": "-18.0dB",

使用
client.on('data',function(data){})
节点套接字传入以下数据:

{
 "jsonrpc": "2.0",
 "result": {
           "Name": "MyGain",
           "Controls": [
                        {
                         "Name": "gain",
                         "String": "-18.0dB",
                         "Value": -18,
                         "Position": 0.68333333
                        },
                        {
                         "Name": "mute",
                         "String": "unmuted",
                         "Value": 0,
                         "Position": 0
                        }
                       ]
            },
 "id": "upd"
}

使用
JSON.parse(data)
会导致
uncaughtsyntaxerror:JSON中的意外标记位于位置201

如果我直接把绳子传过去,一切都很好

提前谢谢#

编辑1:

我的代码:

this.client = new net.Socket();
this.client.setEncoding('utf8');
this.client.on('data', function(data) {
console.log('raw:' + data);
var dataj = JSON.parse(data);
// console.log(b);
if (dataj.id == "upd") {
    console.log("UPDATE MESSAGE");
} else {
    console.log('unknown:' + data);
}
// client.destroy(); // kill client after server's response
});
如果:

this.client = new net.Socket();
this.client.setEncoding('utf8');
this.client.on('data', function(data) {
console.log('raw:' + data);
var dataj = JSON.parse({"jsonrpc":"2.0","result":{"Name":"MyGain","Controls":[{"Name":"gain","String":"-65.0dB","Value":-65.0,"Position":0.29166665},{"Name":"mute","String":"unmuted","Value":0.0,"Position":0.0}]},"id":"upd"});
// console.log(b);
if (dataj.id == "upd") {
    console.log("UPDATE MESSAGE");
} else {
    console.log('unknown:' + data);
}
// client.destroy(); // kill client after server's response
});
编辑2:

连接到本地套接字服务器的电子环境。无法控制服务器输出

请使用以下命令:

this.client = new net.Socket();
this.client.setEncoding('utf8');
this.client.on('data', function(data) {
console.log('raw:' + data);
var dataj = data
// console.log(b);
if (dataj.id == "upd") {
   console.log("UPDATE MESSAGE");
 } else {
  console.log('unknown:' + data);
 }
 // client.destroy(); // kill client after server's response
});

JSON.parse工作正常。您能否使用顶部的
图标创建一个代码段,以便我们可以复制此问题?它在节点中运行,需要套接字连接,我已在editBetter中将完整代码附加到
console.log(data)
,以查看数据到底是什么。一个字符串正好包含上面引用的块代码或…?我试图解码的JSON片段直接从控制台复制。将控制台打印复制到静态变量中时,所有操作都正常。在这一行之后
console.log('raw:'+data)
你能告诉我console.log('typeof:'+typeof data)的输出吗所以我不理解的是,由于它已经是正确的格式,通过重新分配变量JS,它会自动创建为对象吗?但是,执行上述操作时,结果始终为未知大小写,并且dataj类型仍然为stringdata。stringdata的格式已经正确,您可以直接使用它,而无需解析,也无需dataj this.client.on('data',function(data){if(data.id==“upd”){console.log(“UPDATE MESSAGE”);}else{console.log('unknown:'+data);});按照你说的做,当我简单地console.log(data.id)时,我得到了unfinedy你可以console.dir(data)并且你可以看到你的数据的属性,可能是数据havent和名为idconsole.dir(data)的属性,并将结果发送给我