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"}'

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));


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.

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.

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.


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)


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


10

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

<span>{{someObject | json}}</span>

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


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/



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


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


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"}


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

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));

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;
}

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"}"*/

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


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.


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.


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


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();

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 !!!


0
//use JSON.stringify({})

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


-1

Benutze das,

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

-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);

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.