2017-05-12 9 views
-1

Ich habe ein JSON-Objekt, das wie folgt aussieht:Convert JSON mit Objekten und Arrays String

{ 
     files: ['test.mp4'], 
     name: ['testFile'], 
     hints: ['%YES%_%MAYBE%_%NO%'] 
    } 

Und ich brauche es in einen String zu konvertieren, so dass die Ausgabe wie folgt aussieht:

[{files=test, name=testFile, hints= %YES%_%MAYBE%_%NO%}] 

Ist dies in Node JS möglich? Dank

Ich habe versucht, die folgenden:

var x = { 
    files: ['test.mp4'], 
    name: ['testFile'], 
    hints: ['%YES%_%MAYBE%_%NO%'] 
} 
console.log(JSON.stringify(x)); 

Aber die Ausgabe sieht wie folgt aus:

{"files":["test.mp4"],"name":["testFile"],"hints":["%YES%_%MAYBE%_%NO%"]} 

noch mit den eckigen Klammern. Ich kenne die Schlüssel und Werte im obigen Objekt möglicherweise nicht 100%.

+2

das ist kein gültiges Objekt – Karim

+0

Dies ist, was ich in meiner GET Antwort zurückgegeben – deeveeABC

+0

haben Sie JSON.stringfy() versucht? Es wird konvertiert und Json-Objekt in eine Zeichenfolge. – Darkisa

Antwort

3

Versuchen JSON.stringify(obj)

Sie dann eine Zeichenfolge mit Anführungszeichen usw.

2

JavaScript hat JSON.stringify() Methode, die ein Objekt in String umwandeln kann:

var x = { 
    files: ['test.mp4'], 
    name: ['testFile'], 
    hints: ['%YES%_%MAYBE%_%NO%'] 
} 
console.log(JSON.stringify(x)); 
// result: '{"files":["test.mp4"],"name":["testFile"],"hints":["%YES%_%MAYBE%_%NO%"]}' 

Dieses in einem String führt die kann mit der Methode JSON.parse() in das JS-Objekt zurücktransformiert werden. Wenn Sie immer noch alle Klammern und Anführungszeichen entfernen möchten, können Sie einfach JavaScript replace() Methode (Ersetzung Zeichen , , und " mit leeren Zeichenfolge), aber dies wird diese Zeichen in allen Ihren Werten ersetzen (falls vorhanden) und wird dazu führen (Art) nicht wiederverwendbare Zeichenfolge.

+0

Bitte lesen Sie die aktualisierte Frage – deeveeABC

0

TL; DR Sie dies nicht tun, wenn Sie absolut haben (dh Sie von jemand anderem mit einem verkorkste API geschrieben zu tun, die die Daten in diesem Format haben muss.)

Wenn Sie Wenn Sie genau das Format haben möchten, das in Ihrer Frage aufgelistet ist, müssen Sie Ihre eigene stringify-Funktion schreiben, die rekursiv durch das Objekt läuft, das Sie übergeben, und alle Regeln anwendet, die Sie verwenden möchten. Sie müssen alle möglichen Permutationen Ihres Objekts berücksichtigen und diese Regeln buchstabieren.

Zum Beispiel haben Sie Arrays mit einzelnen Elementen im Ausgangsobjekt in Strings konvertiert - was passiert, wenn mehr als ein Element im Array vorhanden ist? Sollte es durch ein Komma oder ein anderes Zeichen begrenzt sein? Sollten wir Elemente einfach nach dem ersten wegwerfen? Wenn Sie die stringify Funktion geschrieben haben, müssen Sie auch die entsprechende parse Funktion schreiben, um es umzukehren. Und es sollte erwähnt werden, dass Sie in Ihrem Beispiel Informationen wegwerfen (zB die Dateiendung auf der .mp4 Datei) - wie gehen Sie damit um?

Eine viel, viel besseren Weg diesen Ansatz wäre zu tun, was andere Leute hier vorgeschlagen haben: Verwendung JSON.stringify und schreiben Sie Ihren Code Standard JSON-Objekte zu verwenden. Warum? Weil das Format gut dokumentiert und gut verstanden ist und die zu konvertierenden Funktionen gut getestet sind.Sie sparen sich eine Menge Zeit und Schmerzen, wenn Sie nicht versuchen, das Rad hier neu zu erfinden.