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

时间:2016-01-11 05:13:19

标签: 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.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) {

enter image description here

1 个答案:

答案 0 :(得分:0)

JSON是JavaScript Object Notation的缩写,是一种轻量级,语言无关的数据交换格式。为了在JSON字符串上使用JSON.parse,字符串必须是有效的JSON。 "{key:value}"不是有效的JSON字符串,因此解析器会抛出错误。

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

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

  

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

那么,你的字符串"{key:value}"有什么问题?好吧,key不是一个字符串,因此解析器在到达" k"时会立即抛出错误。此外,一旦我们修复了key,您就会发现value没有true。也意味着什么。您需要在此处传递实际值(字符串,数字,对象,数组值或falsenullvar newData = '{"key":12345}'; var test = JSON.parse(newData); console.log(test.key); // 12345 ,如上所述。

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

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";