2015-02-02 2 views
0

Я подключаюсь к службе через веб-сокеты, которые отправляют сообщения для некоторых событий, которые происходят.Разбор сообщений с использованием Javascript

Я получаю сообщения в следующем формате:

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

Как я могу разобрать это сообщение, чтобы извлечь значение (в данном случае ложь)?

Примечание:
В API Docs услуг отметить, что эти сообщения Eval-возможности сообщения 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

Эти сообщения сервера являются строками? – Abovestand

+0

@Abovestand: Да, это строки – Pratham

ответ

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.

+0

Я думал об использовании Regex для синтаксического анализа, но в документах службы упоминаются сообщения, которые могут быть полезными для eval, поэтому было думать, что лучше не использовать Regex. Любые предложения/мнения? – Pratham

+0

Предоставляет ли служба определения функций для вас? – Abovestand

Смежные вопросы