2014-10-09 7 views
0

Im пытаясь разобрать ответ JSON от сервера, используя узел, но его приход через как строку, как это, например:JSON.parse строка - неожиданный маркер

"{name:'hello'}" 

Вот как я уже воссоздан точный проблема:

http://jsfiddle.net/x5sup14j/

Я попытался replace(/'/g, '"'); удалить одиночные кавычки, и JSON.stringify, а также бросали в некоторых toString()

Я не могу показаться, что это>. <

.

.

EDIT

Я построил сервер узла, чтобы получить запрос с некоторыми данными, которые затем прокси через другой сервер. Затем я сохраняю некоторую информацию из ответа (тело http) и возвращает другой объект на клиентскую сторону. Heres мой код:

var express = require('express'); 
var app = express(); 
var request = require('request'); 
var bodyParser = require('body-parser'); 
var mongo = require('mongojs'); 


app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ 
    extended: true 
})); 


app.use('/login', function(req, res) { 
    request.post(
     'http://192.168.1.53', 
     { form: { req: 'auth', cid: '1', em: req.body.em, pw: req.body.pw, rm: true} }, 
     function (error, response, body) { 
      //var body = JSON.parse(body); 

      if (!error && response.statusCode == 200 && body.success == true) { 
       user.res = res; 
       var cookies = response.headers['set-cookie']; 
       database.createUser(cookies, req.body.em, req.body.pw); 

      } else if (body.success == false) { 
       res.json({success: false, error: body.success}); 

      } else { 
       res.json({success: false, error: error}); 
      } 
     } 
    ); 

}); 
+10

Недействительно JSON. Это не только одинарные кавычки, «имя» должно быть завернуто в двойные кавычки. Это действительно должно быть исправлено на стороне сервера. Возможно, вы сможете исправить это на стороне клиента, но это будет довольно утомительно. –

+0

Прежде чем попытаться «исправить», вы можете исправить источник плохих данных? Если нет, есть и другие небезопасные способы его устранения. – epascarello

+0

Нет никакого способа исправить это на другом сервере. Я добавлю код node.js, который я использую, который получает ответ http, возможно, что-то на моей стороне я могу исправить, потому что, если я делаю то же самое через консоль с ajax, он возвращается как объект json. –

ответ

-1

Использование модуля Сенча Ext.js для обработки JSON мы можем вызвать функцию декодирования, который анализирует JSON отлично.

http://docs.sencha.com/extjs/4.2.2/source/JSON.html#Ext-JSON

+0

Это не должно быть принятым ответом. Плохая практика заключается в том, чтобы зависеть от нестандартного поведения одной конкретной библиотеки для борьбы с некорректным JSON. Почему бы вам просто не исправить JSON с сервера? –

+0

Его не мой сервер. В противном случае я бы это сделал. Я ненавижу использовать плохую практику, но иногда нет другого выбора. –

+0

Тогда просто 'eval' это. –

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