Javascript 将对象字符串转换为JSON/js对象时出错
我正在尝试将字符串转换为对象。我查看了一下,所有的东西都说要么使用JSON.parse,要么使用eval。然而,当我尝试这些方法时,我的程序失败了,我检查了调试器,它说我有一个无效的表达式:意外的令牌k。有人能帮我吗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
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)或者什么?