使用Javascript解析消息

时间:2015-02-02 07:33:18

标签: javascript json parsing

我通过网络套接字连接到服务,该网络套接字为发生的某些事件发送消息。

我收到以下格式的邮件:

scope("unique_id_01").spot.occupied=false

如何解析此消息以提取值(在本例中为false)?

注意:
服务API文档提到这些消息是可评估的JavaScript消息,而不是JSON格式。

该服务还发送另一条消息,格式为:

scope("scope_abcd-01").zone.event({"id":"abcd-02","occupied":true,"timestamp":"2015-01-13T09:13:55.644Z", ..otherData});

事件(..)字段中的文本是有效的json字符串。为解析上述事件,我使用了以下代码:

var scope = function (scopeKey) {
    var result = {
        zone: {
            event: function (jsonMsg) {
                console.log("Scope : " + scopeKey + " id : " + jsonMsg.id);
                // use the json
            }
        }
    };
    return result;
};

eval(message received from websocket);

在将它传递给eval之前,我也确认它是有效且真实的回应。

如何解析收到的邮件?

1 个答案:

答案 0 :(得分:0)

使用Regex提取相关值:

var messageFromServer = 'scope("unique_id_01").spot.occupied=false';

var matches = /^scope\("(.*)"\)\.spot\.occupied=(.*)$/.exec(messageFromServer);
if(matches){    
    console.log(matches[1]); //'unique_id_01'
    console.log(matches[2]); //'false'   
}

使用捕获组来定位动态内容。这里的所有匹配仍然是字符串 - JSON.parse您知道包含有效JSON的匹配。