it-swarm.com.de

Konvertieren Sie das Array in JSON

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

348
dotty

Skript für Rückwä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 Web-Browser (IE 8 und höher). Die vollständige Auflistung finden Sie unter caniuse . Die Gutschrift geht an: @Spudley für seinen Kommentar unten

594
JonoW

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

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

var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))
61

Wow, es scheint heutzutage viel einfacher geworden zu sein.

json = { ...array };

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

json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
28

Oder versuchen Sie, das Array als Objekt zu definieren. (var cars = {};) Dann müssen Sie nicht in json konvertieren. Dies mag in Ihrem Beispiel nicht praktisch sein, hat aber für mich gut funktioniert.

11
think win win

Ich entschied mich für die json2-Bibliothek und bekam einen Fehler bezüglich "zyklischer Datenstrukturen".

Ich habe es gelöst, indem ich json2 erzählte, wie ich mein komplexes Objekt konvertieren soll. Es funktioniert jetzt nicht nur, aber ich habe nur die Felder aufgenommen, 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
Paulo Pedroso

Ein anderer Weg könnte sein:

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

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

Wenn Sie nur ein Objekt wie das angefragte Objekt haben, wird Folgendes funktionieren.

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

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

let json = `[${cars}]`

für allgemeinere Objekte/Arrays (ohne Zirkelverweise ) verwenden Sie JSON.stringify (cars).

let cars = [1,2,3]; cars.Push(4,5,6);

let json = `[${cars}]`;

console.log(json);
console.log(JSON.parse(json)); // json validation
0