2015-03-05 5 views
-1

У меня есть следующие строки в Node.js, которые я получаю от сервераРазбираем обычную строку в формате JSON в node.js

{"response":"Name 1: local value1 remote value2 state ACTIVE\nName 2: local value3 remote value4 state ACTIVE"} 

, и я хочу, чтобы преобразовать его в формат JSON как следующий -

{ 
        "response":[ 
         { 
          "Name":1, 
          "local":"value1", 
          "remote":"value2", 
          "state":"active" 
         }, 
         { 
          "Name":2, 
          "local":"value3", 
          "remote":"value4", 
          "state":"active" 
         } 
        ] 
       } 

Я не могу использовать JQuery, потому что это на стороне сервера.

Я пробовал делать JSON.parse(), но это не вызвало ожидаемого результата.

Thanks, Ganesh.

+0

Вашего целевой формат не является действительным JSON. просьба уточнить. –

+0

Если ваш сервер должен отправить JSON, он должен быть исправлен, потому что он не отправляет действительные вложенные JSON – luboskrnac

+0

Спасибо. Я только что обновил свой целевой JSON. Кроме того, у меня нет возможности изменить ответ на стороне сервера. – Ganesh

ответ

0

Предполагая, что ответ от сервера всегда приходит в формате предоставленных вами, вы можете создать JSON вы хотите, как это:

var json = {"response":"Name 1: local value1 remote value2 state ACTIVE\nName 2: local value3 remote value4 state ACTIVE"}; 

function parse(json) { 
    var responses = json.response.split("\n"), 
     regex = /(([A-Za-z0-9]+) ([A-Za-z0-9]+))+/g, 
     result = { response:[] }; 

    responses.forEach(function(res) { 
    var match, resp = {}; 
    while(match = regex.exec(res)) 
     resp[match[2]] = match[3].toLowerCase(); 

    result.response.push(resp); 
    }); 

    return result; 
} 

console.log(parse(json)); 
// => 
//{ response: 
// [ { Name: '1', local: 'value1', remote: 'value2', state: 'active' }, 
//  { Name: '2', local: 'value3', remote: 'value4', state: 'active' } ] } 
+0

Спасибо. Это работает !! – Ganesh

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