使用Javascript解析消息
我通过web套接字连接到一个服务,该服务为发生的某些事件发送消息 我接收以下格式的邮件:使用Javascript解析消息,javascript,json,parsing,Javascript,Json,Parsing,我通过web套接字连接到一个服务,该服务为发生的某些事件发送消息 我接收以下格式的邮件: scope("unique_id_01").spot.occupied=false 如何解析此消息以提取值(在本例中为false) 注: 服务API文档提到这些消息是可评估的JavaScript消息,而不是JSON格式 该服务还发送另一条消息,格式如下: scope("scope_abcd-01").zone.event({"id":"abcd-02","occupied":true,"timestamp
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之前,我还验证了它是有效和真实的响应
如何解析我收到的两条消息 使用正则表达式提取相关值:
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。解析您知道的包含有效JSON的匹配项。这些服务器消息是字符串?@overstand:是的,这些是字符串。我正在考虑使用正则表达式进行解析,但服务的文档提到要评估的消息,因此认为最好不要使用正则表达式。有什么建议/意见吗?服务是否为您提供功能定义?