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

Error converting string of object to JSON/js object

我正在尝试将字符串转换为对象。我调查了一下,一切都说使用 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) {

JSON,JavaScript Object Notation 的缩写,是一种轻量级的、与语言无关的 data-interchange 格式。为了在 JSON 字符串上使用 JSON.parse,该字符串需要有效 JSON。 "{key:value}" 不是有效的 JSON 字符串,因此解析器会抛出错误。

首先,在 JSON 中,对象是一组无序的 name/value 对,其中名称是 字符串 ,值可以是 字符串, 数字, 对象, 数组, truefalsenull.

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

A string is a sequence of zero or more Unicode characters, wrapped in double quotes.

那么,您的字符串 "{key:value}" 有什么问题?好吧,key 不是字符串,所以解析器在到达 "k" 时会立即抛出错误。此外,一旦我们修复了 key,您就会发现 value 也没有任何意义。您需要在此处传递实际值(字符串、数字、对象、数组值或 truefalsenull,如上所述)。

所以,相反,你会想要这样的东西:

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