Javascript 将对象字符串转换为JSON/js对象时出错

Javascript 将对象字符串转换为JSON/js对象时出错,javascript,json,string,object,typeconverter,Javascript,Json,String,Object,Typeconverter,我正在尝试将字符串转换为对象。我查看了一下,所有的东西都说要么使用JSON.parse,要么使用eval。然而,当我尝试这些方法时,我的程序失败了,我检查了调试器,它说我有一个无效的表达式:意外的令牌k。有人能帮我吗 router.post('/insertData', function (req, res) { var databaseName = req.body.DB , collection = req.body.collection, newData = req.body.da

我正在尝试将字符串转换为对象。我查看了一下,所有的东西都说要么使用JSON.parse,要么使用eval。然而,当我尝试这些方法时,我的程序失败了,我检查了调试器,它说我有一个无效的表达式:意外的令牌k。有人能帮我吗

router.post('/insertData', function (req, res) {
    var databaseName = req.body.DB , collection = req.body.collection, newData = req.body.data  ; 
    var test = JSON.parse(newData);
    var db = new Db(databaseName, new Server('localhost', 27017)); 
    db.open(function (err, db) {
        // Insert a document in the capped collection
        db.collection(collection).insert(test, { w: 1 }, function (err, result) {
是JavaScript对象表示法的缩写,是一种轻量级的、与语言无关的数据交换格式。为了在JSON字符串上使用
JSON.parse
,该字符串必须是有效的JSON<代码>“{key:value}”不是有效的JSON字符串,因此解析器抛出错误

首先,在JSON中,对象是一组无序的名称/值对,其中名称是字符串,值可以是字符串、数字、对象、数组、
true
false
null

有趣的是JSON如何定义字符串:

字符串是零个或多个Unicode字符的序列,用双引号括起来

那么,字符串
“{key:value}”
有什么问题吗?嗯,
key
不是字符串,因此解析器在到达“k”时会立即抛出一个错误。此外,一旦我们修复了
,您会发现
也没有任何意义。您需要在此处传递实际值(如上文所述,字符串、数字、对象、数组值或
true
false
null

因此,相反,你会想要这样的东西:

var newData = '{"key":12345}';
var test = JSON.parse(newData);
console.log(test.key); // 12345

那个图像应该是什么?如果“{key:value}”是
newData
的实际值,那么它既不会是JSON.parse也不会是evalNo,它在解析时会给出一个错误。我一点也不会做,我知道。我的回答是,您需要为它提供“有效的JSON”。我提供的代码段是有效的,因此您需要确保您的
newData
是一个有效的JSON字符串,`您提供的值(
'{key:value}
)不是有效的JSON字符串。但是,我提供的值是(“{”key:12345}”)。您需要修复JSON字符串以正确解析它。我必须将其作为字符串传递。“{key:value}”,因为我通过路由传递它。那么我如何将它解析为有效的json对象呢?等等,我做了{“key”:12345},它成功了。我想我只需要添加一些客户端验证。谢谢有没有办法检查JSON解析是否失败?比如(json.parse()!=true)或者什么?