Javascript 访问JS字典会产生未定义的错误

Javascript 访问JS字典会产生未定义的错误,javascript,json,dictionary,websocket,Javascript,Json,Dictionary,Websocket,我试图在表中显示流中接收的一些数据。我正在为此使用以下代码: function notify(data){ var actual_JSON = JSON.parse(data); console.log(actual_JSON["Pipekey"]+" - "+actual_JSON["workdate"]+" total: "+actual_JSON); } 目前只需检查和报告值。 这是每行的控制台输出: 未定义-未定义总计:{“管道键”:1521,“工作日期”:“2016年

我试图在表中显示流中接收的一些数据。我正在为此使用以下代码:

function notify(data){
    var actual_JSON = JSON.parse(data);
    console.log(actual_JSON["Pipekey"]+" - "+actual_JSON["workdate"]+" total: "+actual_JSON);
}
目前只需检查和报告值。 这是每行的控制台输出:

未定义-未定义总计:{“管道键”:1521,“工作日期”:“2016年12月1日” 08:51:00,“测量”:{“订单”:201794,“热量”:4043,“批次”:12,“管”:1,“壁厚”:6.246,“外径”:89,“长度”:10000}

为什么我不能按值访问字典的成员,我可以如何替换

我被暗示问题出在解析的数据中有一些不规则的字符,因此我还将代码包含在通过WebSocket发送数据的服务器中:

function multiStep(myConnection, data) {
    var i=0;
    clearInterval(myTimer);
    myTimer=setInterval(function() {
        console.log("eseguo il timer "+i+"/"+data.length);
        if (i<data.length){
            var element=JSON.stringify(data[i]);
            console.log("provo a mandare elemento: "+element);
            try {
                myConnection.send(element);
                console.log("mandato elemento");
            } catch(err) {
                console.log('Websocket error: %s', err);
                i=data.length;
                clearInterval(myTimer);
            }
            i++;
        } else {
            console.log("finito il loop");
            clearInterval(myTimer);
        }
    }, 3000);
}
但是对于一个有趣的颜色变化,控制角色应该在哪里。 而如果我将post to Notepad+中的字符串复制,则实际控制字符实际上是通过移动指针来显示的。
因此,我很困惑,因为我不知道这个字符来自哪里,如果列出字符的ascii不列出它,而是相反地解释它以改变显示的颜色,那么如何消除它。

您的数据包含一些损坏的字符。如果你把下面的代码片段编辑一下,你会看到一些浮动的红点(如
​\‌·​“批次\”:12
管\”:1‌​·)。下面的数据字符串具有相同数据的干净版本,并且工作正常

功能通知(数据){
var-actual_JSON=JSON.parse(数据);
log(实际_-JSON[“Pipekey”]+“-”+实际_-JSON[“workdate”]+“总计:”+实际_-JSON);
}
/*
数据=“{\'Pipekey\”:1521,“workdate\”:\“01/12/2016 08:51:00\”,“measurement\”:{\'order\”:201794,“heat\”:4043\‌​"标段\“:12,“管道\”:1‌​,\“壁厚\”:6‌​.246,\“外径‌​r\':89,\'长度\':10‌​000}}";
*/
数据=“{”Pipekey\”:1521,“workdate\”:“01/12/2016 08:51:00\”,“测量”:{“订单”:201794,“热量”:4043,“批次”:12,“管”:1,“壁厚”:6.246,“外径”‌r \“:89,\“长度\“:10000}”;

notify(data);
该问题是由于将数据从索引文件中继到帧时出现过多的stringfy造成的。一旦删除它,Json可以很好地解析它并返回一个对象。

请检查它是否不是一个对象数组。请尝试
array.isArray(实际的Json)
您的实际_JSON变量是一个对象吗?它是一个字符串可以解释您的问题。请尝试
console.log(实际_JSON的类型);
我很确定它是一个字符串,因为
console.log
-ing它会打印[object object]我能想到的唯一合理的事情是,它的名字是真的,它实际上是一个字符串。你是对的,它是一个字符串,但如果解析它,为什么会是这样呢?这是解析之前的数据:原始数据“{”Pipekey\”:1521,“workdate\”:“01/12/2016 08:51:00\,“measurement\”:{\“order\”:201794,“heat\”:4043,“lot\”:12,“tube\”:1,“wallThickness\”:6.246,“outletDiameter\”:89,“length\”:10000}“可能是这样,谢谢,但我从一个服务器收到这些数据,该服务器已经将自己的数组字符串化了,没有我以任何方式编辑结果。我不会以任何方式强制stringfy在其输出的随机位置添加空格。甚至不知道哪个领域会产生问题。。。我正在添加服务器代码供您参考。另外,我如何可视化包含的那些损坏的字符?至少请告诉我如何检测损坏的字符,以便我可以检查它们是在哪个步骤创建的。@FabrizioBartolomucci我使用代码片段工具在该网站上检测到了这些字符。我在我的usuall编辑器(Atom)上看不到它们。我真的不知道怎么在外面发现它们。但是,他们出现了,当删除代码时效果很好。这并不意味着代码与源代码是一样的。原始的JSON可能没有问题,但后来被损坏(复制/粘贴、转换函数等)
app.js:58 str:0 ascii:48
app.js:58 str:4 ascii:52
app.js:58 str:3 ascii:51
app.js:58 str:, ascii:44
app.js:58 str:\ ascii:92
app.js:58 str:" ascii:34
app.js:58 str:l ascii:108
app.js:58 str:o ascii:111
app.js:58 str:t ascii:116
app.js:58 str:\ ascii:92
app.js:58 str:" ascii:34
app.js:58 str:: ascii:58
app.js:58 str:1 ascii:49
app.js:58 str:2 ascii:50
app.js:58 str:, ascii:44