繁体   English   中英

访问JS字典给出未定义

[英]Accessing JS dictionary gives undefined

我正在尝试在表中呈现流中接收到的一些数据。 我为此使用以下代码:

function notify(data){
    var actual_JSON = JSON.parse(data);
    console.log(actual_JSON["Pipekey"]+" - "+actual_JSON["workdate"]+" total: "+actual_JSON);
}

目前仅检查和报告值。 这是每一行的控制台输出:

未定义-未定义总计:{“ 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}}

为什么我不能按值访问字典的成员,而应该怎么做呢?

我被暗示问题是解析数据中存在一些不规则字符,因此我还将代码包含在通过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);
}

我还尝试打印字符串的所有字符的ascii,但是在用户报告为以下内容的地方找不到任何不规则的东西:

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

但是为了使颜色有趣地变化,控制字符应该在该位置。 如果我将帖子中的字符串复制到Notepad +,则实际上是通过移动指针来显示实际的控制字符。 因此,我很困惑,因为我不知道该字符来自何处以及如果列出字符的ascii时没有列出它,而是相反地解释它以更改显示颜色,那么如何摆脱它。

您的数据包含一些损坏的字符。 如果您采用下面的代码片段进行编辑,您将在已注释的数据字符串中看到一些浮动的红点(如​\\‌·​"lot\\":12\\"tube\\":1‌​· )出来。 该数据字符串下面的数据字符串具有相同数据的纯净版本,并且可以正常工作。

 function notify(data){ var actual_JSON = JSON.parse(data); console.log(actual_JSON["Pipekey"]+" - "+actual_JSON["workdate"]+" total: "+actual_JSON); } /* data = "{\\"Pipekey\\":1521,\\"workdate\\":\\"01/12/2016 08:51:00\\",\\"measurement\\":{\\"order\\":201794,\\"heat\\":4043,\\‌​"lot\\":12,\\"tube\\":1‌​,\\"wallThickness\\":6‌​.246,\\"outletDiamete‌​r\\":89,\\"length\\":10‌​000}}"; */ data = "{\\"Pipekey\\":1521,\\"workdate\\":\\"01/12/2016 08:51:00\\",\\"measurement\\":{\\"order\\":201794,\\"heat\\":4043, \\"lot\\":12,\\"tube\\":1,\\"wallThickness\\":6.246,\\"outletDiamete‌r\\":89,\\"length\\":10000}}"; notify(data); 

问题很简单,这是因为将数据从索引文件中继到帧时,stringfy过多。 删除后,Json可以对其进行精细解析并返回一个对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM