2015-09-06 3 views
0

Как вы обрабатываете ответ JSON от Google?googles recaptcha (версия 2) Ответ

Это, как я получаю JSON:

res.on('data', function (chunk) { 
      //process.stdout.write(chunk);//formats it like I need it 

      var lines =JSON.parse(chunk); 
}); 

Что я получаю от Google (например), как Google JSON выглядит так:

{ success: false, 'error-codes': [ 'missing-input-response' ] } 

То, что я думал, будет работать:

JSON.parse("{ success: false, 'error-codes': [ 'missing-input-response' ] }").success; 

Конечно, это не сработает, потому что оно не является правильным.

Что на самом деле работает (но для этого мне нужно преобразовать JSON от Google):

JSON.parse("{ "success": false, "error-codes": [ "missing-input-response" ]}").success 

Тогда я нашел this:

var req = http.request(options, function(res) { 
    res.setEncoding('utf8'); 
    res.on('data', function(chunk) {//chunk is the JSON from google 
    var lines = chunk.split("\n"); 
    if(lines.length >= 2) { 
     if(lines[0] == 'true') 
      that._recaptcha_response.is_valid = true; 
     that._recaptcha_response.error = lines[1]; 
    } 
    that.emit('data', that._recaptcha_response); 
    }); 
}); 

Но это, кажется, не работает на моем месте , возможно, они изменили JSON от recaptcha версии 1 до версии 2?!.

ОБНОВЛЕНО

Более глубокий взгляд показал следующее:

Look here

+0

обновлено мое сообщение – user254197

ответ

0

Похоже, JSON, возможно, уже были обработаны для вас. { success: false, 'error-codes': [ 'missing-input-response' ] } - как Node.js распечатывает объект.

0

Хорошо, это решить мою проблему:

JSON.parse(blal.replace(/\n|\r/g, "")).success; 

Предполагая blal является Googles JSON.