我试图将字符串转换为对象。我调查了它,所有内容都说使用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) {
答案 0 :(得分:0)
JSON是JavaScript Object Notation的缩写,是一种轻量级,语言无关的数据交换格式。为了在JSON字符串上使用JSON.parse
,字符串必须是有效的JSON。 "{key:value}"
不是有效的JSON字符串,因此解析器会抛出错误。
首先,在JSON中,对象是一组无序的名称/值对,其中名称是字符串,值可以是字符串,数字,对象,数组,true
,false
或null
。
有趣的是JSON如何定义字符串:
字符串是零个或多个Unicode字符的序列,用双引号括起来。
那么,你的字符串"{key:value}"
有什么问题?好吧,key
不是一个字符串,因此解析器在到达" k"时会立即抛出错误。此外,一旦我们修复了key
,您就会发现value
没有true
。也意味着什么。您需要在此处传递实际值(字符串,数字,对象,数组值或false
,null
,var newData = '{"key":12345}';
var test = JSON.parse(newData);
console.log(test.key); // 12345
,如上所述。
所以,相反,你会想要这样的东西:
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";