2016-05-26 2 views
-1
mit

Also ich versuche, einen JSON-String zu erstellen, die wie folgt aussieht:erstellen String-Wert für die Zeit nach Anfrage Zitate ES6

{ 
    "username": "John", 
    "email": "[email protected]", 
    "address": "123 Fake St", 
    ... 
} 

Das ist, was ich habe:

stringPost += fieldName + ": " + fieldValue +", "; 

Und ich dann bin JSON.string es. Aber es braucht diese notwendigen Zitate. Was ich habe, kehrt wie folgt aus:

"username: John, email: [email protected], address: 123 Fake St, " 
// all in one wrapping quote: not what we need 

Ich brauche es wie folgt aus:

{"username": "john", "email": "[email protected]"... // quotes with each value 

Ich habe versucht, das richtige "vs" Anführungszeichen hinzufügen, aber es macht nur mit \ Benutzername ... Hilfe !

+2

'JSON.stringify' nimmt ein Objekt als Parameter, kein String ... Warum nicht einfach ein Objekt' var erstellen jsonObj = {} 'und dann tun' jsonObj [fieldname] = fieldValue' für Ihre Felder, dann 'JSON.stringify (jsonObj);'? – TAGraves

+0

Aber, was Sie Ihren Weg zu tun, wollen Sie nur 'stringPost + =‚„‘ + fieldname + ‚‚:‘‘ + fieldvalue + ‚“‘;' – TAGraves

+0

@TAGraves Ich mag würde Ihren ersten Vorschlag verwenden. aber ich durchlaufe jedes Feld und füge es an diese Zeichenfolge an. Also für jedes Feld Rückkehr 'stringPost + =‚„‘ + fieldname + ‚‚:‘‘ + fieldvalue + ‚“‘;' es zu einer Variablen stringPost Hinzufügen die ich später zu einem Ajax-Aufruf anhängen wird – Modelesq

Antwort

1

JSON.stringify nimmt als Parameter ein Objekt, kein String Vielmehr String-Verkettung, nur ein Objekt erstellen, und legen Sie die Schlüssel zu den Feldnamen und Werte an die Fieldwerte als die Verwendung von:.

var jsonObj = {}; 
// now within some loop: 
jsonObj[fieldName] = fieldValue; 
// after the loop: 
var ajaxString = JSON.stringify(jsonObj); 
Verwandte Themen