2010-02-19 30 views
296

Mam tablicę (var cars = []), która zawiera kilka liczb całkowitych. Dodałem kilka wartości do tablicy, ale teraz muszę wysłać tę tablicę do strony za pomocą metody jQuery's .get. Jak mogę przekonwertować go na obiekt JSON do wysłania?Konwertuj tablicę na JSON

+0

Po prostu podwójne sprawdzenie: czy tablica, którą chcesz wysłać do strony, jest tablicą JavaScript lub czy jest na serwerze? –

+0

to tablica JavaScript, wyślę ją do skryptu w języku Python, a Python użyje łańcucha JSON i będzie działał z tym. – dotty

Odpowiedz

512

Script dla wstecznej kompatybilności: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

i zadzwoń:

var myJsonString = JSON.stringify(yourArray); 

Uwaga:Obiekt JSON jest teraz częścią większości nowoczesnych przeglądarek internetowych (IE 8 & powyżej). Zobacz pełną listę na stronie caniuse. Kredyt trafia do: @Spudley za komentarz poniżej

+5

Działa to, czy jQuery ma taką funkcję? Wolałbym nie dołączać innego pliku js, jeśli jQuery ma już funkcję. – dotty

+1

jQuery ma implementację JSON.parse w wersji 1.4.1, ale nie JSON.stringify ... Jeśli minifikujesz json2.js jego <3k myślę. – gnarf

+6

Tak, byłem zaskoczony, że jQuery nie ma tego wbudowanego. – JonoW

11

Postanowiłem użyć biblioteki json2 i otrzymałem komunikat o "cyklicznych strukturach danych".

Rozwiązałem go, mówiąc json2, jak konwertować mój obiekt złożony. Nie tylko teraz działa, ale także uwzględniłem tylko te pola, których potrzebuję. Oto jak to zrobiłem:

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

zrobiłem to w ten sposób:

jeśli mam:

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

przekonwertować pluginArrayArg (który jest czysty javascript tablicy) do JSON tablicy:

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

Lub spróbuj zdefiniować tablicę jako obiekt. (var cars = {};) Wtedy nie ma potrzeby konwertowania na json. To może nie być praktyczne w twoim przykładzie, ale działa dobrze dla mnie.

11

Wow, wydaje się dużo łatwiej obecnie ... 3 sposoby, można to zrobić:

json = { ...array }; 

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

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

W JavaScript można użyć JSON.stringify przekonwertować tablicę lub wartości do JSON sformatowany ciąg.

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

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

Jeśli masz tylko jeden obiekt taki jak ten, który zadałeś, poniższe elementy będą działać.

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