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?


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


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

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; }, {});

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

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.


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

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

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)


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