Zamiast przechodzić z ciągu json i używać $ .parseJSON, muszę wziąć mój obiekt i zapisać go w zmiennej jako ciąg reprezentujący json.
(Biblioteka, z którą mam do czynienia, oczekuje nieprawidłowego typu json, więc muszę się z nim bawić, aby działał).
Jak najlepiej to zrobić?
javascript
jquery
json
Incognito
źródło
źródło
Odpowiedzi:
Edycja: Zamiast implementować poniższy kod, należy użyć biblioteki json2.js od Douglasa Crockforda. Zapewnia dodatkowe funkcje i lepszą / starszą obsługę przeglądarki.
Pobierz plik json2.js z: https://github.com/douglascrockford/JSON-js
// implement JSON.stringify serialization JSON.stringify = JSON.stringify || function (obj) { var t = typeof (obj); if (t != "object" || obj === null) { // simple data type if (t == "string") obj = '"'+obj+'"'; return String(obj); } else { // recurse array or object var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (t == "string") v = '"'+v+'"'; else if (t == "object" && v !== null) v = JSON.stringify(v); json.push((arr ? "" : '"' + n + '":') + String(v)); } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } }; var tmp = {one: 1, two: "2"}; JSON.stringify(tmp); // '{"one":1,"two":"2"}'
Kod z: http://www.sitepoint.com/blogs/2009/08/19/javascript-json-serialization/
źródło
undefined
, funkcje, (które nie są prawidłowe wartości JSON), Boolean obiektów (npnew Boolean(true);
) lubNaN
które powinny być zastąpione withnull
, etc ... również nie obsługuje dodatkowych opcjonalnych argumentów,replacer
funkcji ispaces
liczby dla wcięć, które są w pełni opisane w standardzie.JSON.stringify({})
i zobacz, czy otrzymasz"{}"
bez konieczności dołączania powyższego kodu. Możesz nawet przekazać parametry, aby odfiltrować klucze lub wykonać ładne drukowanie, np.JSON.stringify({a:1,b:2}, null, 2)
Umieszcza nową linię i 2 spacje przed każdym kluczem.używam
co daje mi ciąg.
źródło
Większość przeglądarek ma obecnie natywny
JSON
obiekt, który obejmujeparse
istringify
metody. Więc po prostu spróbujJSON.stringify({})
i zobacz, czy dostaniesz"{}"
. Możesz nawet przekazać parametry, aby odfiltrować klucze lub wykonać ładne drukowanie, np.JSON.stringify({a:1,b:2}, null, 2)
Umieszcza nową linię i 2 spacje przed każdym kluczem.JSON.stringify({a:1,b:2}, null, 2)
daje
"{\n \"a\": 1,\n \"b\": 2\n}"
który drukuje jako
{ "a": 1, "b": 2 }
Jeśli chodzi o zamieszanie wokół części pytania, użyj drugiego parametru. Z http://www.javascriptkit.com/jsref/json.shtml :
źródło
Najlepszym sposobem, jaki znalazłem, jest użycie jQuery JSON
źródło
Możesz przeanalizować JSON do obiektu, a następnie utworzyć zniekształcony kod JSON z obiektu ajavscript. Jednak może to nie być najlepsza wydajność.
W przeciwnym razie, jeśli chcesz dokonać tylko bardzo małych zmian w ciągu, po prostu potraktuj go jako ciąg i zmodyfikuj go za pomocą standardowego javascript.
źródło