嵌套对象是一个字符串 - 需要它们作为对象

时间:2017-07-18 12:47:39

标签: javascript json node.js object express

我在节点中使用express-validator来验证我的表单,一旦我返回了我的验证结果,他们通过一个对象传递了错误(这就是我所拥有的):

{ email: 
   { param: 'email',
     msg: 'Email address must be between 4-100 characters long, please try again.',
     value: '' },
  name: 
   { param: 'name',
     msg: 'Name must be between 3-20 characters long.',
     value: '' },
  password: 
   { param: 'password',
     msg: 'Password must include one lowercase character, one uppercase character, a number, and a special character.',
     value: '' },
  passwordc: 
   { param: 'passwordc',
     msg: 'Password must be between 8-50 characters long.',
     value: '' } }

我遇到的问题是这是一个“字符串”,遗憾的是它不是对象类型。我需要将它转换为它应该是一个具有嵌套对象的对象。

我不能使用JSON.parse,因为这不是有效的JSON。

如何将此对象字符串更改为对象?这样我就可以遍历并显示相关错误。

感谢您的帮助。 P.S我非常坚持这一点 - 所以如果你知道答案,那么很多布朗尼就会从我身上指向你。干杯!

2 个答案:

答案 0 :(得分:1)

好的,这真的很奇怪,我已经到底了。

基本上,express-validator用新的更新回传对象的方式一定存在错误/问题。

我使用了它们的折旧函数validationErrors(),它返回一个对象 - yay。与使用推荐的设置相反:https://github.com/ctavan/express-validator#installation

这给我一个对象,这是一个类型的字符串(我知道很奇怪)。我会让开发人员知道这是一个错误,或者可能是由于我的设置(节点,表达,反应)。

感谢您的回答。

答案 1 :(得分:0)

我认为,这是JSON表示法的一个问题。您获得的当前字符串不是所需的格式。您需要在属性名称和双引号周围添加双引号,而不是单引号。这应该让你的JSON.parse能够正常工作。

要根本原因,你需要关注从哪里得到这个JSON,并确保它发出适当的JSON格式。

此外,如果您的代码正在创建此JSON,您宁愿不想添加换行符和填充来减小大小。您可以随时使用http://www.jsoneditoronline.org/(或其他人)以友好的格式查看它们。

希望这有帮助!