Mam tablicę, var cars = [2,3,..]która zawiera kilka liczb całkowitych. Dodałem kilka wartości do tablicy, ale teraz muszę wysłać tę tablicę na stronę za pomocą .getmetody jQuery . Jak przekonwertować go na obiekt JSON do wysłania?
Mam tablicę, var cars = [2,3,..]która zawiera kilka liczb całkowitych. Dodałem kilka wartości do tablicy, ale teraz muszę wysłać tę tablicę na stronę za pomocą .getmetody jQuery . Jak przekonwertować go na obiekt JSON do wysłania?
Odpowiedzi:
Skrypt kompatybilności wstecznej: 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 i nowsze). Zobacz caniuse pełnego wykazu. Podziękowania dla: @Spudley za komentarz poniżej
JSONobiekt w standardzie, co oznacza, że nie potrzebujesz tego skryptu, chyba że planujesz obsługę starszych przeglądarek, takich jak IE7 lub Firefox 3.0. Zobacz CanIUse na wykresie wsparcia.
Zrobiłem to w ten sposób:
Jeżeli 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);
aby przekonwertować pluginArrayArg (czyli czystą tablicę javascript) na tablicę JSON:
var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))
Wow, wygląda na to, że jest teraz dużo łatwiej ... 3 sposoby na zrobienie tego:
json = { ...array };
json = Object.assign({}, array);
json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
jsonString = JSON.stringify({ ...array })
Zdecydowałem się użyć biblioteki json2 i dostałem błąd dotyczący „cyklicznych struktur danych”.
Rozwiązałem ten problem, mówiąc json2, jak przekonwertować mój złożony obiekt. Nie tylko teraz działa, ale uwzględniłem tylko 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;
}
Lub spróbuj zdefiniować tablicę jako obiekt. (var cars = {};) Zatem nie ma potrzeby konwersji na json. To może nie być praktyczne w twoim przykładzie, ale działało dobrze dla mnie.
Innym sposobem może być to:
var json_arr = {};
json_arr["name1"] = "value1";
json_arr["name2"] = "value2";
json_arr["name3"] = "value3";
var json_string = JSON.stringify(json_arr);
Jeśli masz tylko 1 obiekt, taki jak ten, o który prosiłeś, następujące będą działać.
var x = [{'a':'b'}];
var b= JSON.stringify(x);
var c = b.substring(1,b.length-1);
JSON.parse(c);
Najkrótszym sposobem, jaki znam, aby wygenerować prawidłowy Json z tablicy liczb całkowitych, jest
let json = `[${cars}]`
dla bardziej ogólnego obiektu / tablicy (bez odwołań cyklicznych ) użyj JSON.stringify (samochody)
ponieważ moja tablica była jak poniżej: i użyłem funkcji .push, aby utworzyć ją dynamicznie
my_array = ["234", "23423"];
Jedynym sposobem, w jaki przekształciłem moją tablicę w json, jest
json = Object.assign({}, my_array);