Przejrzałem wikipedię, przejrzałem google i przeczytałem oficjalną dokumentację, ale wciąż nie doszedłem do momentu, w którym naprawdę rozumiem, czym jest JSON i dlaczego go używam.
Od jakiegoś czasu buduję aplikacje wykorzystujące PHP, MySQL oraz JavaScript / HTML, a jeśli JSON może coś zrobić, aby ułatwić mi życie, poprawić kod lub poprawić interfejs użytkownika, chciałbym o tym wiedzieć. Czy ktoś może dać mi zwięzłe wyjaśnienie?
Odpowiedzi:
JSON (JavaScript Object Notation) to lekki format używany do wymiany danych. Opiera się na podzbiorze języka JavaScript (sposób, w jaki obiekty są budowane w JavaScript). Jak podano w MDN , niektóre JavaScript to nie JSON, a niektóre JSON to nie JavaScript.
Przykładem tego jest odpowiedź usług internetowych. W „dawnych” czasach serwisy internetowe używały XML jako podstawowego formatu danych do przesyłania danych zwrotnych, ale odkąd pojawił się JSON ( format JSON jest określony w RFC 4627 przez Douglasa Crockforda ), był to format preferowany, ponieważ jest o wiele bardziej lekki
O wiele więcej informacji można znaleźć na oficjalnej stronie internetowej JSON .
JSON jest zbudowany na dwóch strukturach:
Struktura JSON
Oto przykład danych JSON:
JSON w JavaScript
JSON (w JavaScript) to ciąg znaków!
Ludzie często zakładają, że wszystkie obiekty JavaScript są JSON i że JSON jest obiektem JavaScript. To jest niepoprawne.
W JavaScript nie
var x = {x:y}
jest JSON , to jest obiekt JavaScript . Obie nie są tym samym. Odpowiednikiem JSON (reprezentowanym w języku JavaScript) byłbyvar x = '{"x":"y"}'
.x
jest obiektem typu string, a nie obiektem samym w sobie. Aby przekształcić to w pełnoprawny obiekt JavaScript, musisz go najpierw przeanalizowaćvar x = JSON.parse('{"x":"y"}');
,x
jest teraz obiektem, ale to już nie jest JSON.Zobacz obiekt JavaScript Vs JSON
Podczas pracy z JSON i JavaScript może pojawić się pokusa, aby użyć
eval
funkcji do oceny wyniku zwróconego w wywołaniu zwrotnym, ale nie jest to sugerowane, ponieważ istnieją dwa znaki (U + 2028 i U + 2029) prawidłowe w JSON, ale nie w JavaScript (czytaj więcej o tym tutaj ).Dlatego zawsze należy próbować użyć skryptu Crockforda, który sprawdza poprawność JSON przed jego oceną. Link do wyjaśnienia skryptu znajduje się tutaj, a tutaj jest bezpośredni link do pliku js. Obecnie każda duża przeglądarka ma własną implementację .
Przykład użycia parsera JSON (z jsonem z powyższego fragmentu kodu):
Parsera JSON oferuje również inny bardzo użyteczną metodę
stringify
. Ta metoda przyjmuje obiekt JavaScript jako parametr i zwraca ciąg znaków w formacie JSON. Jest to przydatne, gdy chcesz wysłać dane z powrotem na serwer:Powyższe dwie metody (
parse
istringify
) również biorą drugi parametr, który jest funkcją, która będzie wywoływana dla każdego klucza i wartości na każdym poziomie wyniku końcowego, a każda wartość zostanie zastąpiona wynikiem wprowadzonej funkcji. (Więcej na ten temat tutaj )Btw, dla wszystkich, którzy uważają, że JSON jest przeznaczony tylko do JavaScript, sprawdź ten post, który wyjaśnia i potwierdza inaczej.
Bibliografia
źródło
Wyjaśnienie koncepcji - brak kodu lub żargonu technicznego
Co to jest JSON? - Jak wyjaśniłem to mojej żonie TM
Ja: „Jest to w zasadzie sposób komunikowania się z kimś na piśmie ... ale z bardzo szczegółowymi zasadami.
Żona: tak ....?
Ja: W prozaicznym angielskim zasady są dość luźne: tak jak w przypadku walki w klatkach. W przypadku JSON tak nie jest. Istnieje wiele sposobów na opisanie czegoś:
• Przykład 1: Nasza rodzina ma 4 osoby: Ty, ja i 2 dzieci.
• Przykład 2: Nasza rodzina: ty, ja, dziecko1 i dziecko2.
• Przykład 3: Rodzina: [ty, ja, dziecko1, dziecko2]
• Przykład 4: mamy 4 osoby w naszej rodzinie: mama, tata, dziecko1 i dziecko2.
Żona: Dlaczego zamiast tego nie używają zwykłego angielskiego?
Ja: tak, ale pamiętajmy, że mamy do czynienia z komputerami. Komputer jest głupi i nie będzie w stanie zrozumieć zdań. Musimy więc być bardzo konkretni, gdy w grę wchodzą komputery, w przeciwnym razie mogą się pomylić. Ponadto JSON jest dość skutecznym sposobem komunikowania się, więc większość nieistotnych rzeczy jest wycinana, co jest ładną ręką. Jeśli chcesz komunikować się z naszą rodziną za pomocą komputera, możesz to zrobić w następujący sposób:
…… i to w zasadzie JSON. Ale pamiętaj, MUSISZ przestrzegać zasad gramatyki JSON. Jeśli złamiesz te zasady, komputer po prostu nie zrozumie (tj. Przeanalizuje) tego, co piszesz.
Żona: Więc jak mam pisać w Jsonie?
Dobrym sposobem byłoby użycie serializatora json - biblioteki, która wykonuje dla ciebie ciężkie podnoszenie.
Podsumowanie
źródło
W skrócie - JSON jest sposobem serializacji w taki sposób, że staje się kodem JavaScript. Po wykonaniu (z eval lub w inny sposób) ten kod tworzy i zwraca obiekt JavaScript, który zawiera dane serializowane. Jest to dostępne, ponieważ JavaScript umożliwia następującą składnię:
Możesz użyć tego do kilku celów. Po pierwsze, jest to wygodny sposób na przesyłanie danych z zaplecza serwera do kodu JavaScript. Dlatego jest to często używane w AJAX.
Możesz go również użyć jako samodzielnego mechanizmu serializacji, który jest prostszy i zajmuje mniej miejsca niż XML. Istnieje wiele bibliotek, które umożliwiają serializację i deserializację obiektów w JSON dla różnych języków programowania.
źródło
Krótko mówiąc, jest to notacja skryptowa do przekazywania danych. W pewnym sensie alternatywa dla XML, natywnie obsługująca podstawowe typy danych, tablice i tablice asocjacyjne (pary nazwa-wartość, zwane Obiektami, ponieważ to one reprezentują).
Składnia jest używana w JavaScript, a sam JSON oznacza „JavaScript Object Notation”. Jednak stał się przenośny i jest używany również w innych językach.
Przydatny link do szczegółów znajduje się tutaj:
http://secretgeek.net/json_3mins.asp
źródło
Format JSON jest często używany do serializacji i przesyłania danych strukturalnych przez połączenie sieciowe. Służy głównie do przesyłania danych między serwerem a aplikacją internetową, służąc jako alternatywa dla XML.
źródło
JSON to JavaScript Object Notation. Jest to znacznie bardziej kompaktowy sposób przesyłania zestawów danych między połączeniami sieciowymi w porównaniu do XML. Sugeruję, aby JSON był używany we wszystkich aplikacjach podobnych do AJAX, gdzie XML byłby w przeciwnym razie „zalecaną” opcją. Szczegółowość XML wydłuży czas pobierania i zwiększy zużycie przepustowości ($$$). Ten sam efekt można osiągnąć za pomocą JSON, a jego narzut jest prawie wyłącznie poświęcony samym danym, a nie podstawowej strukturze.
źródło
powszechna krótka odpowiedź brzmi: jeśli używasz AJAX do wysyłania żądań danych, możesz łatwo wysyłać i zwracać obiekty jako ciągi JSON. Dostępne rozszerzenia do obsługi JavaScript wywołania toJSON () dla wszystkich typów javascript do wysyłania danych do serwera w żądaniu AJAX. Odpowiedzi AJAX mogą zwracać obiekty jako ciągi JSON, które można konwertować na obiekty JavaScript za pomocą prostego wywołania eval, np. Jeśli funkcja AJAX zwróciła jakąś funkcję AjaxFunctionCallReturningJson
możesz pisać w JavaScript
JSON może być również używany do ładunków usług sieciowych i innych, ale jest to naprawdę wygodne dla wyników AJAX.
źródło
Lubię JSON głównie dlatego, że jest tak zwięzły . W przypadku treści internetowych, które można zgzipować, niekoniecznie jest to wielka sprawa (stąd dlaczego x html jest tak popularny). Ale są sytuacje, w których może to być korzystne.
Na przykład dla jednego projektu przesyłałem informacje, które musiały zostać zserializowane i przesłane za pośrednictwem XMPP . Ponieważ większość serwerów ograniczy ilość danych, które można przesłać w jednym komunikacie, uznałem, że pomocne jest użycie JSON zamiast oczywistej alternatywy, XML.
Jako dodatkowy bonus, jeśli znasz język Python lub JavaScript, już znasz JSON i możesz go interpretować bez większego przeszkolenia.
źródło
Co to jest JSON?
JavaScript Object Notation (JSON) to lekki format wymiany danych inspirowany literałami obiektowymi JavaScript.
Wartości JSON mogą składać się z:
obiekty (kolekcje par nazwa-wartość) tablice (uporządkowane listy wartości) ciągi (w podwójnych cudzysłowach) liczby true, false lub null
JSON jest niezależny od języka.
JSON z PHP?
Po wersji PHP 5.2.0 rozszerzenie JSON jest domyślnie dekodowane i koduje funkcje.
Json_encode - zwraca reprezentację JSON wartości Json_decode - Dekoduje ciąg JSON Json_last_error - Zwraca ostatni występujący błąd.
Składnia i reguły JSON?
Składnia JSON pochodzi ze składni notacji obiektowych JavaScript:
Dane znajdują się w parach nazwa / wartość Dane są oddzielone przecinkami Nawiasy klamrowe przechowują obiekty Nawiasy kwadratowe przechowują tablice
źródło
Musimy zrobić projekt na studiach i napotkaliśmy bardzo duży problem, który nazywa się Polityką Same Pochodzenia. Między innymi sprawia, że twoja metoda XMLHttpRequest z Javascript nie może wysyłać żądań do domen innych niż domena, w której znajduje się twoja strona.
Na przykład nie możesz złożyć wniosku na www.otherexample.com, jeśli Twoja witryna znajduje się na www.example.com. JSONRequest pozwala na to, ale otrzymasz wynik w formacie JSON, jeśli strona na to pozwala (na przykład ma usługę internetową, która zwraca wiadomości w JSON). To jest jeden problem, w którym mógłbyś użyć JSON.
Oto coś praktycznego: Yahoo JSON
źródło
Różnica między JSON a konwencjonalną składnią byłaby następująca (w JavaScript)
Standardowy
Z JSON
jeśli użyjemy JSON, możemy zdefiniować w inny sposób jako
Ważną rzeczą, o której musimy pamiętać jest to, że jeśli musimy zbudować klasę lub modal „Pracownik” ze 100 elementami bez metody JSON, musimy parsować wszystko podczas tworzenia klasy. Ale dzięki JSON możemy zdefiniować obiekty wstawiane tylko wtedy, gdy zostanie zdefiniowany nowy obiekt dla klasy.
więc ten wiersz poniżej to sposób robienia rzeczy z JSON (prosty sposób definiowania rzeczy)
źródło
Czasami podaje się szczegóły techniczne tam, gdzie nie są one wymagane, i chociaż wiele z najczęściej głosowanych odpowiedzi jest dokładnie technicznych i szczegółowych, osobiście nie sądzę, aby były łatwiejsze do zrozumienia lub zwięzłe, jak można znaleźć na Wikipedii lub w oficjalna dokumentacja.
Sposób, w jaki lubię myśleć o JSON, jest dokładnie taki, jaki jest - język w świecie różnych języków. Różnica między JSON a innymi językami polega jednak na tym, że „wszyscy” mówią „JSON” wraz z ich „językiem ojczystym”.
Na przykładzie z prawdziwego świata, udawajmy, że mamy trzy osoby. Jedna osoba mówi Igbo jako językiem ojczystym. Druga osoba chciałaby wejść w interakcję z pierwszą osobą, jednak pierwsza osoba mówi jorubę jako swój pierwszy język.
Co możemy zrobić?
Na szczęście trzecia osoba w naszym przykładzie dorastała mówiąc po angielsku, ale zdarza się również, że mówi zarówno Igbo, jak i Joruba jako drugie języki, a zatem może działać jako pośrednik między dwiema pierwszymi osobami.
W świecie programowania pierwszą „osobą” jest Python, drugą „osobą” jest Ruby, a trzecią „osobą” jest JSON, który akurat jest w stanie „przetłumaczyć” Ruby na Python i odwrotnie! Oczywiście ta analogia nie jest idealna, ale jako osoba dwujęzyczna uważam, że łatwo jest sprawdzić, jak JSON współdziała z innymi językami programowania.
źródło
To jest bardzo proste. JSON oznacza Java Script Object Notation. Potraktuj to jako alternatywę do używania XML do przesyłania danych między komponentami oprogramowania.
Na przykład niedawno napisałem kilka usług internetowych, które zwróciły JSON, a niektórzy programiści Javascript napisali kod, który wywołał usługi i wykorzystał informacje zwrócone w tym formacie.
źródło
JSON (notacja obiektowa JavaScript) to lekki format danych do wymiany / przesyłania danych. Jest w parze wartości kluczowych, tak jak JavaScript. W przypadku interfejsu API REST jest szeroko stosowany do przesyłania danych z serwera do klienta. Obecnie korzysta z tego wiele serwisów społecznościowych. Chociaż nie widzę tego tak solidnego jak XML w odniesieniu do typów danych. XML ma bardzo bogate typy danych i XSD. JSONowi brakuje tego trochę.
Dla tej samej ilości danych łańcuchowych JSON będzie lżejszy w porównaniu do XML, ponieważ XML ma wszystkie tagi otwierające i zamykające itp.
źródło
W kontekście Javy jednym z powodów, dla których JSON może chcieć być użyty, jest to, że stanowi on bardzo dobrą alternatywę dla frameworku Serialization Javy, który (historycznie) jest narażony na dość poważne luki.
Joshua Bloch omawia to szczegółowo w punkcie 85 „Preferuj alternatywy dla serializacji Java” (Effective Java 3rd Edition)
Serializacja Javy początkowo miała na celu przetłumaczenie struktur danych na format, który można łatwo przesyłać lub przechowywać. JSON spełnia ten wymóg, bez poważnych exploitów, o których mowa powyżej.
źródło
Wypróbuj następujący kod, aby przeanalizować odpowiedź php json: read.php
server.php
źródło