Konvertieren Sie das JS-Objekt in eine JSON-Zeichenfolge

1244

Wenn ich ein Objekt in JS definiert habe mit:

var j={"name":"binchen"};

Wie kann ich das Objekt in JSON konvertieren? Die Ausgabezeichenfolge sollte sein:

'{"name":"binchen"}'
Bin Chen
quelle
63
JSON.stringify()ist die Methode, nach der Sie suchen.
Gowtham Gopalakrishnan
10
Es gibt immer das erste Mal, wenn Sie es lernen müssen.
Egan Wolf

Antworten:

1922

Alle aktuellen Browser verfügen über eine integrierte native JSON-Unterstützung. Solange Sie sich nicht mit prähistorischen Browsern wie IE6 / 7 beschäftigen, können Sie dies genauso einfach tun:

var j = {
  "name": "binchen"
};
console.log(JSON.stringify(j));

Andris
quelle
5
Laden Sie dieses Skript herunter , damit JSON.stringify(j);es funktioniert
AabinGunz
2
Arbeiten Sie an nodejs, weil node dieselbe Engine verwenden
georgelviv
26
Diese Antwort wurde ein Jahr vor der Veröffentlichung von IE9 veröffentlicht, sodass IE8 zum Zeitpunkt des Schreibens tatsächlich ein moderner Browser war oder zumindest der neueste verfügbare IE.
Andris
JSON.stringify konvertiert keine verschachtelten Objekte. Irgendeine Lösung dafür .. ??
Ritesh
9
Wenn Sie mehr lesbare JSON-Zeichenfolge benötigen Sie können Leerzeichenparameter wievar formattedJSON = JSON.stringify(j, null, 2);
Jacek Gzel
110

Mit JSON.stringify()gefunden in json2.js oder native in den meisten modernen Browsern.

   JSON.stringify(value, replacer, space)
        value       any JavaScript value, usually an object or array.

       replacer    an optional parameter that determines how object
                    values are stringified for objects. It can be a
                    function or an array of strings.

       space       an optional parameter that specifies the indentation
                    of nested structures. If it is omitted, the text will
                    be packed without extra whitespace. If it is a number,
                    it will specify the number of spaces to indent at each
                    level. If it is a string (such as '\t' or ' '),
                    it contains the characters used to indent at each level.

       This method produces a JSON text from a JavaScript value.
Ignacio Vazquez-Abrams
quelle
6
Für ein bisschen mehr Klarheit: replacer ist optional, wenn Sie also die noch verwenden möchten spacearg Sie setzen nullfür replacer. Wenn Sie daran interessiert sind, diese Funktion für hübsches Drucken zu verwenden, fand ich diese Antwort auch nützlich: stackoverflow.com/a/7220510/857209
Glenn Lawrence
34

Schauen Sie sich den aktualisierten / besseren Weg von Thomas Frank an:

Update 17. Mai 2008: Kleines Desinfektionsmittel zur toObject-Methode hinzugefügt. Jetzt wird toObject () die Zeichenfolge nicht auswerten (), wenn darin schädlicher Code gefunden wird. Für noch mehr Sicherheit: Setzen Sie das Flag includeFunctions nicht auf true.

Douglas Crockford, Vater des JSON-Konzepts, schrieb einen der ersten Stringifizierer für JavaScript. Später schrieb Steve Yen von Trim Path eine schöne verbesserte Version, die ich seit einiger Zeit benutze. Es sind meine Änderungen an Steves Version, die ich gerne mit Ihnen teilen möchte. Grundsätzlich stammten sie aus meinem Wunsch, den Stringifizierer herzustellen:

  • zyklische Referenzen verarbeiten und wiederherstellen
  • Fügen Sie den JavaScript-Code für Funktionen / Methoden hinzu (als Option).
  • Schließen Sie bei Bedarf Objektmitglieder von Object.prototype aus.
Sarfraz
quelle
23

Sie können die JSON.stringify () -Methode verwenden, um das JSON-Objekt in einen String zu konvertieren.

var j={"name":"binchen"};
JSON.stringify(j)

Für den umgekehrten Prozess können Sie die JSON.parse () -Methode verwenden, um den JSON-String in ein JSON-Objekt zu konvertieren.

Aravindan Venkatesan
quelle
Vielen Dank, dass Sie den umgekehrten Vorgang hinzugefügt haben.
David Lavieri
12

In eckigenJS

angular.toJson(obj, pretty);

obj: Eingabe, die in JSON serialisiert werden soll.

Pretty (optional):
Wenn true festgelegt ist, enthält die JSON-Ausgabe Zeilenumbrüche und Leerzeichen. Bei einer Ganzzahl enthält die JSON-Ausgabe so viele Leerzeichen pro Einzug.

(Standard: 2)

Nazrul Islam
quelle
12

JSON.stringify(j, null, 4) würde Ihnen verschönertes JSON geben, falls Sie auch eine Verschönerung benötigen

Der zweite Parameter ist Ersetzer. Es kann als Filter verwendet werden, in dem Sie beim Stringifizieren bestimmte Schlüsselwerte herausfiltern können. Wenn auf null gesetzt, werden alle Schlüsselwertpaare zurückgegeben

Vignesh Murugan
quelle
10

Wenn Sie AngularJS verwenden, sollte der 'json'-Filter dies tun:

<span>{{someObject | json}}</span>
Ariel Cabib
quelle
9

JSON.stringify wandelt ein Javascript-Objekt in JSON-Text um und speichert diesen JSON-Text in einer Zeichenfolge.

Die Konvertierung ist ein Objekt in einen String

JSON.parse wandelt eine Zeichenfolge aus JSON-Text in ein Javascript-Objekt um.

Die Konvertierung ist eine Zeichenfolge in ein Objekt

var j={"name":"binchen"};

Um es zu einem JSON-String zu machen, könnte Folgendes verwendet werden.

JSON.stringify({"key":"value"});

JSON.stringify({"name":"binchen"});

Weitere Informationen finden Sie unter diesem Link.

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

Dulith De Costa
quelle
7

Eine benutzerdefinierte Definition dafür, bis wir seltsam von Stringify-Methode tun

var j={"name":"binchen","class":"awesome"};
var dq='"';
var json="{";
var last=Object.keys(j).length;
var count=0;
for(x in j)
{
json += dq+x+dq+":"+dq+j[x]+dq;
count++;
if(count<last)
   json +=",";
}
json+="}";
document.write(json);

AUSGABE

{"name":"binchen","class":"awesome"}

LIVE http://jsfiddle.net/mailmerohit5/y78zum6v/

Rohit Kumar
quelle
entgeht
1
Dieser benutzerdefinierte Code ist sehr unvollständig. Unterstützt keine Arrays, Objekte und Sonderzeichen. Beispiel: der json {"arr": ["1", "2", "3"], "obj": {"a": "b"}, "key \" mit \\ speziellen} Zeichen ":" value "} gibt {" arr ":" 1,2,3 "," obj ":" [object Object] "," key "mit \ special} chars": "value"} aus, das ist falsch!
Manuel Romeiro
7

Ich hatte Probleme mit Stringify, dem der Speicher ausgeht, und andere Lösungen schienen nicht zu funktionieren (zumindest konnte ich sie nicht zum Laufen bringen), als ich über diesen Thread stolperte. Dank Rohit Kumar durchlaufe ich einfach mein sehr großes JSON-Objekt, um zu verhindern, dass es abstürzt

var j = MyObject;
var myObjectStringify = "{\"MyObject\":[";
var last = j.length
var count = 0;
for (x in j) {
    MyObjectStringify += JSON.stringify(j[x]);
    count++;
    if (count < last)
        MyObjectStringify += ",";
}
MyObjectStringify += "]}";

MyObjectStringify würde Ihnen Ihre Zeichenfolgendarstellung geben (genau wie zu anderen Zeiten in diesem Thread erwähnt), außer wenn Sie ein großes Objekt haben, sollte dies auch funktionieren - stellen Sie einfach sicher, dass Sie es entsprechend Ihren Anforderungen erstellen - ich brauchte es, um einen Namen als Array zu haben

Sam
quelle
5

Woking ... Einfach zu bedienen

$("form").submit(function(evt){
  evt.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvert = JSON.stringify(formData);  // Convert to json
});

Vielen Dank

Subroto Biswas
quelle
3

Sie können die native Stringify-Funktion wie folgt verwenden

const j={ "name": "binchen" }

/** convert json to string */
const jsonString = JSON.stringify(j)

console.log(jsonString) // {"name":"binchen"}

Alongkorn Chetasumon
quelle
3

Wenn Sie den Wert für die json-Eigenschaften im Zeichenfolgenformat erhalten möchten, gehen Sie wie folgt vor

var i = {"x":1}

var j = JSON.stringify(i.x);

var k = JSON.stringify(i);

console.log(j);

"1"

console.log(k);

'{"x":1}'
KARTHIKEYAN.A
quelle
3

Zum Debuggen in Node JS können Sie util.inspect () verwenden . Es funktioniert besser mit Zirkelverweisen.

var util = require('util');
var j = {name: "binchen"};
console.log(util.inspect(j));
Pavel Netesa
quelle
3

Die vorhandenen JSON-Ersetzungen waren zu viel für mich, deshalb habe ich meine eigene Funktion geschrieben. Dies scheint zu funktionieren, aber ich habe möglicherweise einige Randfälle übersehen (die in meinem Projekt nicht vorkommen). Und funktioniert wahrscheinlich nicht für bereits vorhandene Objekte, sondern nur für selbst erstellte Daten.

function simpleJSONstringify(obj) {
    var prop, str, val,
        isArray = obj instanceof Array;

    if (typeof obj !== "object") return false;

    str = isArray ? "[" : "{";

    function quote(str) {
        if (typeof str !== "string") str = str.toString();
        return str.match(/^\".*\"$/) ? str : '"' + str.replace(/"/g, '\\"') + '"'
    }

    for (prop in obj) {
        if (!isArray) {
            // quote property
            str += quote(prop) + ": ";
        }

        // quote value
        val = obj[prop];
        str += typeof val === "object" ? simpleJSONstringify(val) : quote(val);
        str += ", ";
    }

    // Remove last colon, close bracket
    str = str.substr(0, str.length - 2)  + ( isArray ? "]" : "}" );

    return str;
}
Hauke
quelle
2
So in order to convert a js object to JSON String: 

Die einfache Syntax zum Konvertieren eines Objekts in eine Zeichenfolge lautet

JSON.stringify(value)

Die vollständige Syntax lautet: JSON.stringify (Wert [, Ersetzer [, Leerzeichen]])

Sehen wir uns einige einfache Beispiele an. Beachten Sie, dass die gesamte Zeichenfolge doppelte Anführungszeichen erhält und alle Daten in der Zeichenfolge bei Bedarf maskiert werden.

JSON.stringify("foo bar"); // ""foo bar""
JSON.stringify(["foo", "bar"]); // "["foo","bar"]"
JSON.stringify({}); // '{}'
JSON.stringify({'foo':true, 'baz':false}); /* " 
{"foo":true,"baz":false}" */



const obj = { "property1":"value1", "property2":"value2"};
const JSON_response = JSON.stringify(obj);
console.log(JSON_response);/*"{ "property1":"value1", 
"property2":"value2"}"*/
Rahul Choudhary
quelle
2
Es wäre großartig, wenn Sie eine kurze Erklärung Ihres Codes geben könnten.
Jonny
Dies gibt keine Antwort auf die Frage. Sobald Sie einen ausreichenden Ruf haben, können Sie jeden Beitrag kommentieren . Geben Sie stattdessen Antworten, die nicht vom Fragesteller geklärt werden müssen . - Aus dem Rückblick
Rafael
Ich habe meine Antwort bearbeitet. Vielen Dank, dass Sie auf @Rafael und @ jonny hingewiesen haben.
Rahul Choudhary
1

Verwenden Sie JSON.stringifyeinfach eine solche Konvertierung. Denken Sie jedoch daran, dass Felder mit undefinedWert nicht in json enthalten sind

var j={"name":"binchen", "remember":undefined, "age": null };

var s=JSON.stringify(j);

console.log(s);

Das Feld remember'verschwindet' aus der Ausgabe json

Kamil Kiełczewski
quelle
Du hast gerade meinen Tag gerettet. Ich konnte mein Objekt nicht speichern. Der Schlüssel, dass Felder mit undefiniertem Wert nicht in json enthalten sind, hat mein Problem gelöst!
Mohammad Ghonchesefidi
0

Sie können die JSON.stringify () -Methode verwenden, um das JSON-Objekt in einen String zu konvertieren.

var j={"name":"hello world"};
JSON.stringify(j);

Um diese Zeichenfolge wieder in ein JSON-Objekt zu konvertieren, können Sie die Methode JSON.parse () verwenden.

realnikunj
quelle
0

verwenden JSON.stringify(param1, param2, param3);

Was ist: -

param1 -> Wert, der in JSON konvertiert werden soll

param2 -> Funktion zum Stringifizieren auf Ihre eigene Weise. Alternativ dient es als weiße Liste, für die Objekte in den endgültigen JSON aufgenommen werden müssen.

param3 -> Ein Datentyp Number, der die Anzahl der hinzuzufügenden Leerzeichen angibt. Maximal sind 10 erlaubt.

Deepak Agrawal
quelle
0

konvertiere str => obj

const onePlusStr = '[{"brand": "oneplus"}, {"model": "7T"}]';

const onePLusObj = JSON.parse (onePlusStr);

konvertiere obj => str

const onePLusObjToStr = JSON.stringify (onePlusStr);

Verweise auf JSON-Analyse in JS:
JSON.parse (): Klicken Sie auf
JSON.stringify (): Klicken Sie auf

yash
quelle
Können Sie weitere Informationen bereitstellen? Referenzen usw.
Nodejs-Nerd
Verweise auf JSON-Analyse in JS: JSON.parse (): w3schools.com/js/js_json_parse.asp JSON.stringify (): w3schools.com/js/js_json_stringify.asp
yash
danke, kannst du deine Antwort so bearbeiten, dass sie diese enthält
Nodejs-nerd
0

Sehr einfach zu verwendende Methode, aber nicht in der Version verwenden (wegen möglicher Kompatibilitätsprobleme).

Ideal zum Testen auf Ihrer Seite.

Object.prototype.toSource()

//Usage:
obj.toSource();
Bodich
quelle
0

Verwenden Sie die Stringify-Funktion

var j = {
"name":"binchen"
};

var j_json = JSON.stringify(j);

console.log("j in json object format :", j_json);

Viel Spaß beim Codieren !!!

Wunsch Kaleba
quelle
0
//use JSON.stringify({})

const stringified = JSON.stringify ({}) // Objekt übergeben, das Sie im Zeichenfolgenformat konvertieren möchten

Geetanshu Gulati
quelle
-1

Benutze das,

var j={"name":"binchen"};
 var myJSON = JSON.stringify(j);
MKR
quelle
-24

Wenn Sie einen JSON-String haben und dieser nicht mit [] umbrochen ist, wickeln Sie ihn zuerst ein

var str = '{"city": "Tampa", "state": "Florida"}, {"city": "Charlotte", "state": "North Carolina"}';
str = '[' + str + ']';
var jsonobj = $.parseJSON(str);

ODER

var jsonobj = eval('(' + str + ')');
console.log(jsonobj);
Bhaumik Mehta
quelle
Das OP versucht, den anderen Weg zu gehen. Ihre Frage beantwortet den umgekehrten Fall, in dem er eine JSON-Zeichenfolge hat und diese als Objekt erhalten möchte.
Joshua Snider
1
Sie haben umgekehrte Sache zu Frage getan .. Sie sollten JSON.stringfy () Funktion verwenden
Hardik Patel