Javascript JSON.parse字符串-意外标记

Javascript JSON.parse字符串-意外标记,javascript,json,node.js,parsing,Javascript,Json,Node.js,Parsing,我正试图使用node解析服务器的JSON响应,但它是以字符串形式出现的,例如: "{name:'hello'}" 下面是我如何重新创建确切问题的: 我试过替换/g;删除单引号和JSON.stringify,并加入一些toString 使用SENCHA Ext.js模块来处理JSON,我们可以调用decode函数来完美解析JSON 它不是有效的JSON。不仅仅是单引号,名字也需要用双引号括起来。这确实应该在服务器端解决。你也许可以在客户端修复它,但这将是相当乏味的。在你尝试修复它之前,你能修复坏

我正试图使用node解析服务器的JSON响应,但它是以字符串形式出现的,例如:

"{name:'hello'}"
下面是我如何重新创建确切问题的:

我试过替换/g;删除单引号和JSON.stringify,并加入一些toString


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


它不是有效的JSON。不仅仅是单引号,名字也需要用双引号括起来。这确实应该在服务器端解决。你也许可以在客户端修复它,但这将是相当乏味的。在你尝试修复它之前,你能修复坏数据的来源吗?如果没有,还有其他不安全的方法来修复它。不,没有方法在其他服务器上修复它。我将添加我正在使用的接收http响应的node.js代码,也许这是我可以解决的问题,因为如果我使用ajax通过控制台执行相同的操作,它将作为json对象返回。也许你可以使用HanSON之类的东西来解析传入的字符串,然后让它吐出有效的json。马特·伯兰的答案是正确的。蒂莫西·斯特林普也是你的小提琴,用正确的JSON更新,很好用。这不应该是公认的答案。依靠一个特定库的非标准行为来处理格式错误的JSON是一种不好的做法。为什么不从服务器发出正确的JSON呢?它不是我的服务器。否则我会的。我讨厌使用不好的练习,但有时真的没有其他选择。
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});
            }
        }
    );

});