2017-07-18 3 views
-1

Ich benutze Express-Validator in Knoten, um meine Formulare zu validieren, sobald ich meine Validierung Ergebnis voller Fehler zurückgegeben werden sie durch ein Objekt (das ist, was ich habe):Verschachtelte Objekte sind ein String - brauche sie als Objekte

{ 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: '' } } 

Das Problem, das ich habe, ist, dass dies ein "String" ist und leider nicht vom Objekttyp. Ich muss dies in das umsetzen, was es sein soll, ein Objekt mit verschachtelten Objekten.

Ich kann JSON.parse nicht verwenden, da dies kein gültiger JSON ist.

Wie kann ich diese Objektkette in ein Objekt ändern? Dies ist so, dass ich die relevanten Fehler durchlaufen und anzeigen kann.

Danke für Ihre Hilfe. P. Ich bin super dabei - also, wenn Sie die Antwort darauf wissen, dann zeigen viele von Brownie von mir zu Ihnen. Prost!

+0

Ihr JSON ist gültig, warum können Sie in diesem Fall 'JSON.parse' nicht verwenden? –

+1

Sie können dies mit JSONLint überprüfen, es ist nicht gültig. Gültige JSON sollte doppelte Anführungszeichen haben, nicht einzelne, und auch alle Schlüssel sollten doppelte Anführungszeichen um sie herum haben. Die einzige Möglichkeit, die ich JSON.parse kann, ist nach zu vielen regulären Ausdrücken zu laufen, und das ist kein guter Weg, weil sich die Schlüsselnamen ändern können. Ich bin wirklich ratlos! – Notorious

+1

Ich bin verwirrt, das ist ein gültiges JavaScript-Objekt und keine Zeichenfolge. – str

Antwort

0

Ich denke, es ist ein Problem mit JSON-Notation. Die aktuelle Zeichenfolge, die Sie erhalten, hat nicht das erforderliche Format. Sie müssen doppelte Anführungszeichen um Eigenschaftsnamen und doppelte Anführungszeichen für Zeichenfolgen anstelle von einfachen Anführungszeichen setzen. Das sollte deine JSON.parse zur Arbeit bringen.

Um es zu verwurzeln, müssen Sie sich konzentrieren, woher Sie dieses JSON erhalten, und sicherstellen, dass es ein richtiges JSON-Format ausgibt.

Wenn Ihr Code diesen JSON erstellt, möchten Sie keine neuen Zeilen und Abstände hinzufügen, um die Größe zu reduzieren. Sie können immer http://www.jsoneditoronline.org/ (oder andere) verwenden, um sie in einem freundlichen Format zu sehen.

Hoffe, das hilft!

1

Ok das war wirklich seltsam, und ich bin auf den Grund davon gekommen.

Grundsätzlich muss es einen Fehler/ein Problem mit der Art geben, wie Express-Validator Objekte mit ihren neuen Updates zurückgibt.

Ich habe ihre abgeschriebene Funktion validationErrors() verwendet, die ein Objekt zurückgibt, das ein Objekt - yay ist. Im Gegensatz zu den empfohlenen Setup: https://github.com/ctavan/express-validator#installation

Dies war die Rückgabe eines Objekts, das eine Art von String war (seltsam ich weiß). Ich werde den Entwicklern mitteilen, dass dies ein Bug ist, oder vielleicht aufgrund meiner Einstellungen (Knoten, Express, Reagieren).

Danke für die Antworten.

Verwandte Themen