2011-08-03 5 views
20

Moje JSON przedmiot ocenia się:analizowaniem JSON w/@ na symbol znak w nim (arobase)

{ "@io": IO, "@type": XXX } 

Jeśli zmienna ta jest nazywana my_json, w jaki sposób mogę uzyskać dostęp do wartości @type XXX? Próbowałem [email protected], ale to daje błędy. Pomoc doceniona. Dzięki,

Nick

+0

Moja pierwsza skłonność polegałaby na zastąpieniu ciągu znaków na odpowiedzi HTTP przed jej analizą. Może zamienić wszystkie wystąpienia "@" na "at_" lub coś podobnego. –

+1

Nie rozumiem, dlaczego to pytanie zostało odrzucone, a ponieważ wiele osób zastanawia się, jak uzyskać dostęp do właściwości obiektu lub metody, która ma nieparzyste nazewnictwo, lub gdy mają tylko var zawierający nazwę właściwości w łańcuchu, pobudę. – JAAulde

+0

ponieważ uważam, że odpowiedź została wielokrotnie udzielona na tym forum http://stackoverflow.com/questions/1710103/accessing-json-fields-with-weird-characters –

Odpowiedz

30

Zastosowanie nawias kwadratowy notacja z ciągiem:

var XXXValue = my_json['@type']; 

To samo może być używany, gdy masz nazwę właściwości w zmiennej. Na tym samym przykładzie:

var propertyName = '@type'; 
var XXXValue = my_json[propertyName]; 
+1

Jaki jest cel symbolu @ w pliku json? Czy ma jakieś dodatkowe znaczenie w kontekście json? –

+1

@Dane w taki łańcuch, jak to jest, nie ma określonego znaczenia w żadnym kontekście (JSON, JS, itp.) W obrębie pytania. Nie mam pojęcia, dlaczego OP ma klucze o takich nazwach, ale nie ma to żadnego znaczenia w omawianych technologiach. – JAAulde

+1

Dość stare pytanie, ale pojawia się w wyszukiwaniach Google. Symbol @ w JSON to JSON-LD (JSON dla danych połączonych). http://pl.wikipedia.org/wiki/JSON-LD – smoore4

1

Po zakończeniu oceniania można wziąć przedmiot i prawdopodobnie złapać go za klucz.

tj. Obj ["@ type"]. Ale coś wydaje się trochę nie na miejscu.

8

Jak odkryłeś, nie możesz użyć symbolu @ w nazwie zmiennej JavaScript, [email protected] jest nieprawidłowy.

Dobrą wiadomością dla Ciebie jest to, że możesz uzyskać dostęp do zmiennych jako indeksy tablic. Zrobiłbyś to tak:

my_json["@type"] 

Nadzieję, że pomaga.

+1

Popraw mnie jeśli się mylę, ale nie sądzę, że powinieneś używać słowa "tablica" tutaj. –