我通过网络套接字连接到服务,该网络套接字为发生的某些事件发送消息。
我收到以下格式的邮件:
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之前,我也确认它是有效且真实的回应。
如何解析收到的邮件?
答案 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的匹配。