Array in JSON konvertieren

383

Ich habe ein Array, var cars = [2,3,..]das einige ganze Zahlen enthält. Ich habe dem Array einige Werte hinzugefügt, aber jetzt muss ich dieses Array über die .getMethode von jQuery an eine Seite senden . Wie kann ich es zum Senden in ein JSON-Objekt konvertieren?

dotty
quelle
Nur eine doppelte Überprüfung: Ist das Array, das Sie an die Seite senden möchten, ein JavaScript-Array oder befindet es sich auf dem Server?
Ian Oxley
Es ist ein Javascript-Array, ich werde es an ein Python-Skript senden und Python wird die JSON-Zeichenfolge verwenden und damit arbeiten.
Dotty

Antworten:

657

Skript für Abwärtskompatibilität: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Und Ruf an:

var myJsonString = JSON.stringify(yourArray);

Hinweis: Das JSON-Objekt ist jetzt Teil der meisten modernen Webbrowser (IE 8 und höher). Siehe caniuse für eine vollständige Auflistung. Gutschrift geht an: @Spudley für seinen Kommentar unten

JonoW
quelle
5
Das funktioniert, hat jQuery eine solche Funktion? Ich würde es vorziehen, keine weitere js-Datei anzuhängen, wenn jQuery bereits eine Funktion hat.
Dotty
1
jQuery hat die Implementierung von JSON.parse in 1.4.1, aber nicht JSON.stringify ... Wenn Sie json2.js minimieren, ist es <3k, denke ich.
Gnarf
6
Ja, ich war überrascht, dass jQuery dies nicht auch eingebaut hatte
JonoW
120
Wenn Sie diese Antwort noch lesen, sollten Sie darauf hinweisen, dass alle modernen Browser das JSONObjekt standardmäßig enthalten. Dies bedeutet, dass Sie dieses Skript nur benötigen, wenn Sie ältere Browser wie IE7 oder Firefox 3.0 unterstützen möchten. Die Support-Tabelle finden Sie unter CanIUse .
Spudley
1
Es sei darauf hingewiesen, dass Sie dies in einer Browserkonsole tun können: var a = [Einfügen]; JSON.stringify (a)
Michael Cole
70

Ich habe es so gemacht:

wenn ich habe:

var jsonArg1 = new Object();
    jsonArg1.name = 'calc this';
    jsonArg1.value = 3.1415;
var jsonArg2 = new Object();
    jsonArg2.name = 'calc this again';
    jsonArg2.value = 2.73;

var pluginArrayArg = new Array();
    pluginArrayArg.push(jsonArg1);
    pluginArrayArg.push(jsonArg2);

So konvertieren Sie pluginArrayArg (ein reines Javascript-Array) in ein JSON-Array:

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))
Stancho Stanchev
quelle
1
Du hast mein Leben gerettet
MD. Shafayatul Haque
44

Wow, anscheinend ist es heutzutage viel einfacher geworden ... 3 Möglichkeiten, wie Sie es tun können:

json = { ...array };

json = Object.assign({}, array);

json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
Eduardo Sganzerla
quelle
2
jsonString = JSON.stringify({ ...array })
Krishna Torque
11

Ich habe mich für die Verwendung der json2-Bibliothek entschieden und habe eine Fehlermeldung zu „zyklischen Datenstrukturen“ erhalten.

Ich habe es gelöst, indem ich json2 gesagt habe, wie ich mein komplexes Objekt konvertieren soll. Es funktioniert nicht nur jetzt, sondern ich habe auch nur die Felder eingefügt, die ich brauche. So habe ich es gemacht:

OBJ.prototype.toJSON = function (key) {
       var returnObj = new Object();
       returnObj.devid = this.devid;
       returnObj.name = this.name;
       returnObj.speed = this.speed;
       returnObj.status = this.status;
       return returnObj;
   }
Paulo Pedroso
quelle
11

Oder versuchen Sie, das Array als Objekt zu definieren. (var cars = {};) Dann muss nicht mehr in json konvertiert werden. Dies ist in Ihrem Beispiel möglicherweise nicht praktisch, hat aber für mich gut funktioniert.

Frank Adrian
quelle
4

Ein anderer Weg könnte folgender sein:

        var json_arr = {};
        json_arr["name1"] = "value1";
        json_arr["name2"] = "value2";
        json_arr["name3"] = "value3";

        var json_string = JSON.stringify(json_arr);
Vijay Bansal
quelle
1

Wenn Sie nur 1 Objekt wie das von Ihnen angeforderte haben, funktioniert Folgendes.

var x = [{'a':'b'}];
var b= JSON.stringify(x);
var c = b.substring(1,b.length-1);
JSON.parse(c); 
Mahmoud ihmaid
quelle
1

Der kürzeste Weg, den ich kenne, um einen gültigen JSON aus einem Array von Ganzzahlen zu generieren, ist

let json = `[${cars}]`

für weitere allgemeine Aufgabe / array (ohne zirkuläre Referenzen ) verwendet JSON.stringify (Autos)

Kamil Kiełczewski
quelle
1

weil mein Array wie folgt war: und ich die .push-Funktion verwendet habe, um es dynamisch zu erstellen

my_array = ["234", "23423"];

Ich habe mein Array nur in json konvertiert

json = Object.assign({}, my_array);
Harshal Lonare
quelle