Konwertuj obiekt na ciąg JSON

Odpowiedzi:

188

jQuery sprawdza tylko niektóre wyrażenia regularne przed wywołaniem natywnej metody przeglądarki window.JSON.parse(). Jeśli to nie jest dostępne, używa eval()lub dokładniej new Function()do utworzenia obiektu Javascript.

Przeciwieństwem JSON.parse()jest JSON.stringify()serializacja obiektu Javascript w łańcuch. jQuery nie ma do tego własnej funkcjonalności, musisz użyć wersji wbudowanej w przeglądarkę lub json2.jsze strony http://www.json.org

JSON.stringify() jest dostępny we wszystkich głównych przeglądarkach, ale aby zachować zgodność ze starszymi przeglądarkami, nadal potrzebujesz tego rozwiązania zastępczego.

jAndy
źródło
4
może to być pomocne:var theObject = (typeof data == "string") ? jQuery.parseJSON(data) : data;
roberthuttinger
2
@tekretic: Mam nadzieję, że trollujesz. Chrome implementuje JSONobiekt hosta od pierwszego dnia
jAndy
5
@jAndy: O wow, przepraszam. Nie trollowanie, ale OH tak źle. Okazuje się, że natywna obsługa formatu JSON została dodana do WebKit w połowie 2009 roku , dzięki czemu jest obsługiwana od wersji Chrome 3.0. Mój poprzedni, całkowicie niedokładny komentarz był oparty na połowie tego przestarzałego pytania w połączeniu z CMS, nad którym obecnie pracuję, który faktycznie zastępuje window.JSON własną biblioteką, znaczenie JSON.stringify()nie jest zdefiniowane. Całkiem porażka pod każdym względem.
Molomby,
1
@jAndy: nie myl mnie; : JSON.stringify
``
12

Przydatna jest również funkcja Object.toSource () do celów debugowania, gdzie chcesz pokazać obiekt i jego właściwości do celów debugowania. Jest to ogólna funkcja JavaScript (nie jQuery), jednak działa tylko w „nowoczesnych” przeglądarkach.

Excalibur
źródło
4

Konwertuj obiekt JavaScript na dane JSON

$("form").submit(function(event){
  event.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvertedData = JSON.stringify(formData);  // Convert to json
  consol.log(jsonConvertedData);
});

Możesz sprawdzić poprawność danych JSON za pomocą http://jsonlint.com

Subroto Biswas
źródło
2

Możesz użyć doskonałej wtyczki jquery-Json:

http://code.google.com/p/jquery-json/

Ułatwia konwersję do iz obiektów Json.

George Filippakos
źródło
2
Zalecamy stosowanie metod SPL zamiast dodatkowych bibliotek logicznych.
David J Eddy
2
SPL = standardowa biblioteka PHP. Domyślam się, że w tym przypadku będzie to SJL (standardowa biblioteka javascript).
David J Eddy
3
Pytanie dotyczy jQuery i Javascript. Nie ma to nic wspólnego z PHP, bibliotekami PHP czy SPL.
George Filippakos
3
biblioteki standardowe to biblioteki standardowe; nie ma znaczenia język. Chodzi mi o to, że lepiej jest polecić rozwiązanie, które uczy języka zamiast syndromu „użyj tej wtyczki”.
David J Eddy
1
Dokładnie, po co wymyślać koło na nowo ... używaj standardowych możliwości języka zamiast „wtyczki”, ale dygresję.
David J Eddy