2010-02-19 11 views
296

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

+0

Überprüfen Sie einfach: Ist das Array, das Sie an die Seite senden möchten, ein JavaScript-Array oder ist es auf dem Server? –

+0

es ist ein Javascript-Array, ich werde es an ein Python-Skript senden und Python wird die JSON-Zeichenfolge verwenden und damit arbeiten. – dotty

Antwort

512

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

Und Aufruf:

var myJsonString = JSON.stringify(yourArray); 

Hinweis:Das Objekt JSON ist jetzt Bestandteil der meisten modernen Web-Browser (IE 8 & oben). Vollständige Liste finden Sie unter caniuse. Kredit geht an: @Spudley für seinen Kommentar unter

+5

Das funktioniert, hat jQuery eine Funktion wie diese? Ich würde es vorziehen, keine andere 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 seine <3k minimieren, denke ich. – gnarf

+6

Ja, ich war überrascht, dass jQuery das nicht eingebaut hatte – JonoW

11

Ich entschied mich, die json2-Bibliothek zu verwenden, und ich habe einen Fehler über "zyklische Datenstrukturen".

Ich habe es gelöst, indem ich json2 erklärte, wie man mein komplexes Objekt konvertiert. Es funktioniert jetzt nicht nur, sondern ich habe auch nur die Felder, die ich brauche. Hier ist, wie ich es tat:

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

Ich habe es auf diese Weise:

wenn ich:

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 pluginArrayArg (die reine Javascript-Array) in JSON-Array:

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

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

11

Wow, scheint es viel einfacher, heute bekam ... 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; }, {}); 
0

In JavaScript Sie JSON.stringify auf ein Array oder Werte konvertieren in eine JSON verwenden können formatierte Zeichenfolge.

var output = {} 
output[0] = "a"; 
output[1] = "b"; 
output[2] = "c"; 

console.log(JSON.stringify(output)); 
0

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

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