将对象字符串转换为 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 对,其中名称是 字符串 ,值可以是 字符串, 数字, 对象, 数组, true
、false
或null
.
有趣的是JSON如何定义一个字符串:
A string is a sequence of zero or more Unicode characters, wrapped in double quotes.
那么,您的字符串 "{key:value}"
有什么问题?好吧,key
不是字符串,所以解析器在到达 "k" 时会立即抛出错误。此外,一旦我们修复了 key
,您就会发现 value
也没有任何意义。您需要在此处传递实际值(字符串、数字、对象、数组值或 true
、false
、null
,如上所述)。
所以,相反,你会想要这样的东西:
var newData = '{"key":12345}';
var test = JSON.parse(newData);
console.log(test.key); // 12345
我正在尝试将字符串转换为对象。我调查了一下,一切都说使用 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 对,其中名称是 字符串 ,值可以是 字符串, 数字, 对象, 数组, true
、false
或null
.
有趣的是JSON如何定义一个字符串:
A string is a sequence of zero or more Unicode characters, wrapped in double quotes.
那么,您的字符串 "{key:value}"
有什么问题?好吧,key
不是字符串,所以解析器在到达 "k" 时会立即抛出错误。此外,一旦我们修复了 key
,您就会发现 value
也没有任何意义。您需要在此处传递实际值(字符串、数字、对象、数组值或 true
、false
、null
,如上所述)。
所以,相反,你会想要这样的东西:
var newData = '{"key":12345}';
var test = JSON.parse(newData);
console.log(test.key); // 12345