【问题标题】:Nested Objects are a String - Need them as Objects嵌套对象是一个字符串 - 需要它们作为对象
【发布时间】:2017-12-23 08:24:50
【问题描述】:

我在节点中使用 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 我非常坚持这一点——所以如果你知道这个问题的答案,那么我会给你很多布朗尼点。干杯!

【问题讨论】:

  • 你的 JSON 是有效的,为什么你不能在这种情况下使用 JSON.parse
  • 你可以用 JSONLint 来检查,它是无效的。有效的 JSON 应该有双引号,而不是单引号,并且所有键也应该有双引号。我可以 JSON.parse 的唯一方法是在运行太多正则表达式之后,这不是一个好方法,因为键名可能会改变。我真的被这个难住了!
  • 我很困惑,这是一个有效的 JavaScript 对象而不是字符串。
  • @str 就是这样!我已经检查过了,jsonviewer.stack.hu,看起来很完美
  • 我也很困惑哈哈。如果我在 gettype() 中运行这个对象,它是一个字符串,并在控制台中显示为一个字符串,即使它是一个对象。我无法按原样运行 JSON.parse,因为它当前是一个字符串。

标签: javascript json node.js object express


【解决方案1】:

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

要根本原因,您必须关注从何处获取此 JSON,并确保它发出正确的 JSON 格式。

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

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    好吧,这真的很奇怪,我已经找到了原因。

    基本上,express-validator 将带有新更新的对象交回的方式肯定存在错误/问题。

    我已经使用了他们的贬值函数validationErrors(),它返回一个对象,它是一个对象——是的。而不是使用他们推荐的设置:https://github.com/ctavan/express-validator#installation

    这给我返回了一个 typeof 字符串的对象(我知道很奇怪)。我会让开发人员知道这是一个错误,或者可能是由于我的设置(节点、快递、反应)。

    感谢您的回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 2023-01-16
      • 2023-04-05
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多