2014-10-09 57 views
0

我试着使用节点来解析来自服务器的JSON响应,但其未来通过为一个字符串像这样的例子:JSON.parse串 - 意外的标记

"{name:'hello'}" 

这里是我是如何重建的确切问题:

http://jsfiddle.net/x5sup14j/

我试过replace(/'/g, '"');去除单引号和JSON.stringify在一些toString()

以及抛

我似乎无法找出这一个>。 <

编辑

我已经建立了一个节点服务器收到了一些数据的请求,然后代理服务器通过到另一台服务器。然后我保存一些来自响应的信息(http body)并将另一个对象返回给客户端。下面我的代码:

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。这不仅仅是单引号,'name'也需要用双引号括起来。这真的应该在服务器端修复。您可能可以在客户端修复它,但这将非常繁琐。 – 2014-10-09 20:23:24

+0

在尝试“修复”之前,您是否可以修复不良数据的来源?如果没有,还有其他不安全的方法来解决它。 – epascarello 2014-10-09 20:31:04

+0

没有办法解决它在其他服务器上。我将添加我正在使用的接收http响应的node.js代码,也许它在我身边我可以修复,因为如果我通过控制台使用ajax执行相同的操作,它将作为json对象返回。 – 2014-10-09 20:33:15

回答

-1

使用SENCHA Ext.js模块来处理JSON,我们可以调用解码函数来完美地解析json。

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

+0

这不应该被接受的答案。依靠某个特定库的非标准行为来处理格式错误的JSON是不好的做法。你为什么不直接从服务器发出正确的JSON? – 2014-10-12 16:19:46

+0

它不是我的服务器。否则我会的。我讨厌使用不好的练习,但有时候没有其他选择。 – 2014-10-12 16:22:07

+0

然后只是“评估”它。 – 2014-10-12 17:04:33