Przeszukuję obiekt jak {'foo': 'bar'}
Jak mogę zmienić ciąg z powrotem w obiekt?
javascript
json
object
thelolcat
źródło
źródło
{foo: 'bar'}
nie jest prawidłowym JSON (podczas gdy jest to prawidłowe wyrażenie javascript).Odpowiedzi:
Musisz do
JSON.parse()
łańcucha.źródło
JSON.parse
jest przeciwieństwemJSON.stringify
.źródło
JSON.stringify
iJSON.parse
są prawie przeciwieństwami, i „zwykle” tego rodzaju rzeczy będą działać:więc obj i obj2 są „takie same”.
Istnieją jednak pewne ograniczenia, o których należy pamiętać. Często te problemy nie mają znaczenia, gdy masz do czynienia z prostymi przedmiotami. Ale zilustruję tutaj niektóre z nich, korzystając z tej funkcji pomocnika:
Dostaniesz tylko
ownProperties
przedmiot i stracisz prototypy:Stracisz tożsamość:
Funkcje nie przetrwają:
Obiekty daty kończą się jako ciągi:
Nieokreślone wartości nie przetrwają:
Obiekty zapewniające
toJSON
funkcję mogą nie działać poprawnie.Jestem pewien, że występują również problemy z innymi wbudowanymi typami. (Wszystko to zostało przetestowane przy użyciu node.js, więc możesz uzyskać nieco inne zachowanie w zależności od środowiska).
Kiedy ma to znaczenie, czasami można go pokonać, stosując dodatkowe parametry
JSON.parse
iJSON.stringify
. Na przykład:źródło
JSON SPEC
{ bar:"bar" }
(z twojego prototypu) nie jest uważany za prawidłowy Json, ponieważfoo
jest zmienną, a nie łańcuchem. Prawidłowy Json musikey
byćstring
.JSON.parse
. Ostrzegam tylko, że istnieje wiele przypadków, które nie będą poprawnie obsługiwane. Jeśli używasz czystych prymitywnych danych (bez klas, prototypów) i tylko typy danych obsługiwane przez JSON (bez dat, XML, HTML itp.), To nic ci nie jest.X = { foo:"bar" }
jest taki sam,X = { "foo":"bar" }
który jest taki sam jakX = {}; X.foo = "bar"
który jest taki sam jakX={}; X["foo"] = "bar"
Obiekt wynikowy jest identyczny we wszystkich 4 przypadkach. Nie ma to znaczenia dla ważności wygenerowanego JSON.http://jsbin.com/tidob/1/edit?js,console,output
Natywny obiekt JSON obejmuje dwie kluczowe metody.
JSON.parse()
Metoda analizuje ciąg JSON - czyli odtworzenie oryginalnego obiektu JavaScriptvar jsObject = JSON.parse(jsonString);
Metoda JSON.stringify () akceptuje obiekt JavaScript i zwraca jego odpowiednik JSON.
var jsonString = JSON.stringify(jsObject);
źródło
Zalecane jest użycie
JSON.parse
Istnieje alternatywa, którą możesz zrobić:
Json w javascript
Dlaczego używanie funkcji eval JavaScript jest złym pomysłem?
źródło
Co powiesz na to
Jest to bezpieczniejsza alternatywa dla
eval
.Pokaż fragment kodu
źródło
Spójrz na to.
http://jsfiddle.net/LD55x/
Kod:
źródło
źródło