JSON.Parse 在 Faker.js 中将字符串解析为 JSOn 时在位置 0 显示错误
Posted
技术标签:
【中文标题】JSON.Parse 在 Faker.js 中将字符串解析为 JSOn 时在位置 0 显示错误【英文标题】:JSON.Parse Showing error at position 0 while parsing string to JSOn in Faker.js 【发布时间】:2018-05-11 13:53:19 【问题描述】:我已经看到了这类问题并尝试了解决方案,但没有奏效。
我正在从 UI 向控制器发送一个数组,那里有 Node.js 中 faker.js 的参考
我在控制器中的代码:
var FirstName = req.body; // req.body has array
console.log(FirstName); // **Prints** FirstName: 'faker.name.firstName()'
const User = FirstName; // Didnt work because faker.name.firstName is as string
const Usercheck = JSON.stringify(GettingData[0]);
var response = Usercheck.replace(/['"]+/g,'')
console.log(response); // Here it removed the quotations but took total as string. " FirstName: faker.name.firstName()"
JSON.parse(response); // Tried to parse string as JSON but this shows the error at position 0
在 Faker.js 中工作的预期代码是
const User = FirstName: faker.name.firstName() // Hard code and run this it is working fine
如何解决这个问题。
【问题讨论】:
faker.name.firstName
是一个函数,需要评估
@GrégoryBourgin 是的,如果我没有那个单引号 (') 它会起作用。数组可能还有很多字段,比如姓氏等,
【参考方案1】:
JSON.stringify 在所有键周围添加额外的 ",不能使用 Usercheck.replace(/['"]+/g,'') 删除它们,否则无法解析:
var a = JSON.stringify(e:5)
console.log(a) // "e":5
JSON.parse(a); // ok
JSON.parse("e:5"); // nok
【讨论】:
这里没有数字,两者都是字符(字符串)。这里所需的格式是 e : sdfsfd 但我喜欢 e : 'sdfsfd' 我们不关心这个值,我试图向你解释的是,如果你删除 KEY 周围的 " 在你的情况下是 "FirstName",你将无法解析字符串因为它不再是有效的 JSON。此外,您不能将 faker.name.firstName() 存储在值中,而是存储此调用的结果 好的,但我通过报价获得了价值。如何删除该引用的价值。 你不能是一个字符串,如果你想把这个字符串解释为一个函数,你必须这样做: var a = FirstName: 'faker.name.firstName()' ; var b = Function(a.FirstName)();以上是关于JSON.Parse 在 Faker.js 中将字符串解析为 JSOn 时在位置 0 显示错误的主要内容,如果未能解决你的问题,请参考以下文章