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 显示错误的主要内容,如果未能解决你的问题,请参考以下文章

原开发者出局,Faker.js 已被社区控制

原作者出局,Faker.js已被社区控制

原作者出局!Faker.js 已被社区控制。。

如何在 Angular 2 中将对象转换为 JSON 列表?

在打字稿中将 JSON 转换为字符串数组

劲爆!Faker.js 作者删库。。拒绝被白嫖!!